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 ins开发者_运维技巧tinctive 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++) { }
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.
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.
SPL would be the best answer here.
精彩评论