foreach operates on a copy of the array (by copying the array), while while operates by moving the internal index of the array. According to general logic, while should be faster than
foreach (because foreach starts execution When the array is copied in first, while the internal pointer is moved directly), but the result is just the opposite.
In the loop, the array "reading" operation is performed, so foreach is faster than while:
Bangke Home: http://www.bkjia.com/
foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key ];
}
The array "writing" operation is performed in the loop, so while is faster than foreach:
foreach ($array as $key => $value) {
echo $array[$key] = $value . '...';
}
while (list($key) = each($array)) {
$array [$key] = $array[$key] . '...';
}
Summary: It is generally believed that foreach involves value copying and will be slower than while, but in fact, if it is just When reading an array in a loop, foreach is very fast. This is because the copy mechanism used by PHP is "reference counting, copy-on-write", that is to say, even if a variable is copied in PHP , the initial form is actually actually
is still in the form of a reference. Only when the content of the variable changes, the real copy will occur. The reason for doing this is to save memory consumption. It also improves the efficiency of
copying. From this point of view, the efficient read operation of foreach is not difficult to understand. In addition, since foreach is not suitable for processing array write operations, we can draw a conclusion
. In most cases, array write operations are performed in the form of foreach ($array as $key => $value). All codes should be replaced with while (list($key) =
each($array)). The speed difference produced by these techniques may not be obvious in small projects, but in large projects like frameworks, a single request will often involve hundreds of thousands of array loop operations. The difference is will be significantly enlarged.
http://www.bkjia.com/PHPjc/364334.html
www.bkjia.com
truehttp: //www.bkjia.com/PHPjc/364334.htmlTechArticleforeach operates on a copy of the array (by copying the array), while while operates by moving the internal index of the array, Under general logic, while should be faster than foreach (because for...