2010-01-04 4 views
2

sortarray_reverse 기능을 고려하십시오.중복 인수를 수정하고 언제 사용할 수 있습니까?

왜 변수 하나가 전달 된 반면 다른 하나는 새 버전을 반환합니까?

$a = array(3, 1, 2); 

sort($a); 
// $a === array(1, 2, 3) 

array_reverse($a); 
// $a === array(1, 2, 3) 

sort은 그냥 간단하게 array_reverse에 대한 인수의 수정 된 사본을 반환하도록 작성하고, 그 반대하고있다.

나는 " 패스 값에 의한 대 접근 방식을"통과하여 참조를하고을 수정 "을 사용하여 쓰기 기능 여부를 결정하기 위해 어떤 지침이 있는지 알고 싶어하기 때문에 내가 부탁 해요 이유는

수정 리턴 "접근.

답변

1

PHP의 성가심 중 하나는 API가 인데 실제로는이 일치하지 않는다는 것입니다. 예 :

  • 일관되지 않은 매개 변수 순서 (needle, haystack);
  • 일관성없는 밑줄 사용. 일부 함수는 한 부분에서 밑줄을 사용하지만 다른 부분에서는 밑줄을 사용하지 않습니다.

pass-by-reference 대 copy thing은 대부분 같은 보트에 있다고 생각합니다.

+0

예 PHP 코드는 모두 판매되고 있지만 독자적인 함수 작성을위한 권장 사항이 있습니까? – nickf

1

아마도 사용자의 의도가 여기에서 가장 중요하다고 생각합니다. 사용자가 선택한 특정 예에서는 매우 분명하지 않지만 일반적으로 API를 설계 할 때 사용자가 기대하는 것 (파괴적인 내부 수정과 새로 생성 된 반환 값)에 대해 생각하고 싶습니다. .

0

나는 더 안전한 가정이므로 값을 건네주기를 권하고 사본을 반환하는 것이 좋습니다. 참조에 의한 전달, args 수정은 2 개의 다른 동작이 일어나고있는 경우에만 의미가 있습니다. shift, 배열은 수정되었지만 첫 번째 요소는 return ed

관련 문제