programing

PHP $ array [] = $ value 또는 array_push ($ array, $ value)에서 사용하는 것이 더 낫습니까?

nasanasas 2020. 8. 20. 18:55
반응형

PHP $ array [] = $ value 또는 array_push ($ array, $ value)에서 사용하는 것이 더 낫습니까?


배열 구성원을 추가하기 위해 PHP에서 사용하는 것이 더 좋은 방법 :

$array[] = $value;

또는

array_push($array, $value);

매뉴얼에는 함수 호출을 피하는 것이 더 낫다고 나와 있지만 필자는 읽은 $array[]것보다 훨씬 느립니다 array_push(). 누구든지 설명이나 벤치 마크가 있습니까?


벤치 마크는 없지만 개인적 $array[]으로보기가 더 깔끔하고 수십만 개의 문자열을 어레이에 추가 할 계획이 아니라면 정직하게 밀리 초에 걸쳐 머리카락을 분할하는 것은 무의미하다고 생각합니다.

편집 :이 코드 실행 :

$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
    $array[] = $i;
}
print microtime(true) - $t;
print '<br>';
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
    array_push($array, $i);
}
print microtime(true) - $t;

사용하는 첫 번째 방법 $array[]두 번째 방법 보다 거의 50 % 빠릅니다.

일부 벤치 마크 결과 :

Run 1
0.0054171085357666 // array_push
0.0028800964355469 // array[]

Run 2
0.0054559707641602 // array_push
0.002892017364502 // array[]

Run 3
0.0055501461029053 // array_push
0.0028610229492188 // array[]

PHP 매뉴얼에 다음과 같이 언급되어 있으므로 이것은 놀라운 일이 아닙니다.

array_push ()를 사용하여 하나의 요소를 배열에 추가하는 경우 $ array [] =를 사용하는 것이 좋습니다. 이렇게하면 함수 호출에 대한 오버 헤드가 없기 때문입니다.

array_push여러 값을 추가 할 때 더 효율적 이라고 표현되는 방식은 놀라지 않을 것 입니다. 편집 : 호기심에서 몇 가지 추가 테스트를 수행했으며 많은 양의 추가에도 개별 $array[]통화가 하나의 큰 것보다 빠릅니다 array_push. 흥미 롭군.


array_push ()의 주요 용도는 배열의 끝에 여러 값을 푸시 할 수 있다는 것입니다.

문서 에 나와 있습니다 .

array_push ()를 사용하여 하나의 요소를 배열에 추가하는 경우 $ array [] =를 사용하는 것이 좋습니다. 이렇게하면 함수 호출에 대한 오버 헤드가 없기 때문입니다.


에 대한 PHP 문서에서array_push :

참고 : array_push ()를 사용하여 하나의 요소를 배열에 추가하는 경우 $ array [] =를 사용하는 것이 좋습니다. 이렇게하면 함수 호출에 대한 오버 헤드가 없기 때문입니다.


길거리에서 []는 함수 호출에 대한 오버 헤드가 없기 때문에 더 빠르다는 것입니다. 게다가 PHP의 배열 기능을 좋아하는 사람은 없습니다.

"그건 ... 건초 더미, 바늘 .... 아니면 바늘 건초 더미 ... 아, 젠장 ... [] ="


한 가지 차이점은 두 개 이상의 매개 변수를 사용하여 array_push ()를 호출 할 수 있다는 것입니다. 즉, 한 번에 두 개 이상의 요소를 배열로 푸시 할 수 있습니다.

$myArray = array();
array_push($myArray, 1,2,3,4);
echo join(',', $myArray);

인쇄물 1,2,3,4


간단한 $ myarray [] 선언은 함수가 가져올 오버 헤드가 없기 때문에 항목 스택에 항목을 밀어 넣는 것이므로 더 빠릅니다.


Since "array_push" is a function and it called multiple times when it is inside the loop so it will allocate a memory into the stack. But when we are using $array[] = $value then we just assigning value to array.


Second one is a function call so generally it should be slower than using core array-access features. But I think even one database query within your script will outweight 1.000.000 calls to array_push().


Although the question was more about performance, people will come to this question wondering if it's good practise to use array_push or $arr[].

The function might mean lesser lines for multiple values:

// 1 line:
array_push($arr, "Bob", "Steve");
// versus 2 lines:
$arr[] = "Bob";
$arr[] = "Steve";

However, array_push...

  • cannot receive the array keys
  • breaks the needle/haystack naming convention
  • is slower, as has been discussed

I'll be sticking with $arr[].


I just wan't to add : int array_push(...) return the new number of elements in the array (php doc). which can be useful and more compact than $myArray[] = ...; $total = count($myArray);.

Also array_push(...) is meaningful when variable is used as stack.

참고URL : https://stackoverflow.com/questions/559844/whats-better-to-use-in-php-array-value-or-array-pusharray-value

반응형