Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fastest way to iterate array in PHP

Tags:

I'm studying for the Zend PHP certification.

I am not sure about the answer to this question.

Question: What is the best way to iterate and modify every element of an array using PHP 5?

a) You cannot modify an array during iteration

b) for($i = 0; $i < count($array); $i++) { /* ... */ }

c) foreach($array as $key => &$val) { /* ... */ }

d) foreach($array as $key => $val) { /* ... */ }

e) while(list($key, $val) = each($array)) { /* ... */ }


My instinctive is (B) since there is no need to create a temporary variable, but then I realize it won't work for associative arrays.

Further searching around the Internet I found this:

Storing the invariant array count in a separate variable improves performance.

$cnt = count($array); for ($i = 0; $i < $cnt; $i++) { } 
like image 742
Yada Avatar asked Oct 20 '09 20:10

Yada


People also ask

Which loop would you prefer to go through an array in PHP briefly describe?

If you have an array variable, and you want to go through each element of that array, the foreach loop is the best choice.


2 Answers

From these options, C would be the obvious answer.

The remaining options (besides A) may be used to achieve that, depending on the code inside the parenthesis, but the question does not show that code. So it must be C.

And you are answering the wrong question - yes, doing count() before the for cycle will improve performance, but this question is not about performance.

like image 106
Anti Veeranna Avatar answered Oct 21 '22 23:10

Anti Veeranna


You can iterate and modify every element of an array with any of the shown constructs. But some notes on that:

b) Is only useful if the array is a numeric array with the keys from 0 to n-1.

c) Is useful for both kinds of arrays. Additionally $value is a reference of the element’s value. So changing $value inside foreach will also change the original value.

d) Like c) except $value is a copy of the value (note that foreach operates on a copy of $array). But with the key of the element you can access and change the original value with $array[$key].

e) Like d). Use $array[$key] to access and change the original element.

like image 27
Gumbo Avatar answered Oct 21 '22 23:10

Gumbo