php之foreach遍历数组_PHP教程

php中文网
发布: 2016-07-13 10:22:53
原创
1247人浏览过

php之foreach遍历数组

foreach

(PHP 4, PHP 5)

The foreach construct provides an easy way to iterate over arrays. foreach works only on arrays and objects, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable. There are two syntaxes:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement
登录后复制

The first form loops over the array given by array_expression. On each iteration, the value of the current element is assigned to $value and the internal array pointer is advanced by one (so on the next iteration, you'll be looking at the next element).

The second form will additionally assign the current element's key to the $key variable on each iteration.

It is possible to customize object iteration.

note:

UP简历
UP简历

基于AI技术的免费在线简历制作工具

UP简历 128
查看详情 UP简历

When foreach first starts executing, the internal array pointer is automatically reset to the first element of the array. This means that you do not need to call reset() before a foreach loop.

As foreach relies on the internal array pointer, changing it within the loop may lead to unexpected behavior.

In order to be able to directly modify array elements within the loop precede $value with &. In that case the value will be assigned by reference.

<?php <br> $arr = array(1, 2, 3, 4);<br> foreach ($arr as &$value) {<br> $value = $value * 2;<br> }<br> // $arr is now array(2, 4, 6, 8)<br> unset($value); // break the reference with the last element<br> ?>

Referencing $value is only possible if the iterated array can be referenced (i.e. if it is a variable). The following code won't work:

<?php <br> foreach (array(1, 2, 3, 4) as &$value) {<br> $value = $value * 2;<br> }<br> ?> Warning

Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().

note:

foreach does not support the ability to suppress error messages using '@'.

You may have noticed that the following are functionally identical:

<?php <br> $arr = array("one", "two", "three");<br> reset($arr);<br> while (list(, $value) = each($arr)) {<br> echo "Value: $value<br>\n";<br> }<br><br> foreach ($arr as $value) {<br> echo "Value: $value<br>\n";<br> }<br> ?>

The following are also functionally identical:

<?php <br> $arr = array("one", "two", "three");<br> reset($arr);<br> while (list($key, $value) = each($arr)) {<br> echo "Key: $key; Value: $value<br>\n";<br> }<br><br> foreach ($arr as $key => $value) {<br> echo "Key: $key; Value: $value<br>\n";<br> }<br> ?>

Some more examples to demonstrate usage:

<?php <br> /* foreach example 1: value only */<br><br> $a = array(1, 2, 3, 17);<br><br> foreach ($a as $v) {<br> echo "Current value of \$a: $v.\n";<br> }<br><br> /* foreach example 2: value (with its manual access notation printed for illustration) */<br><br> $a = array(1, 2, 3, 17);<br><br> $i = 0; /* for illustrative purposes only */<br><br> foreach ($a as $v) {<br> echo "\$a[$i] => $v.\n";<br> $i++;<br> }<br><br> /* foreach example 3: key and value */<br><br> $a = array(<br> "one" => 1,<br> "two" => 2,<br> "three" => 3,<br> "seventeen" => 17<br> );<br><br> foreach ($a as $k => $v) {<br> echo "\$a[$k] => $v.\n";<br> }<br><br> /* foreach example 4: multi-dimensional arrays */<br> $a = array();<br> $a[0][0] = "a";<br> $a[0][1] = "b";<br> $a[1][0] = "y";<br> $a[1][1] = "z";<br><br> foreach ($a as $v1) {<br> foreach ($v1 as $v2) {<br> echo "$v2\n";<br> }<br> }<br><br> /* foreach example 5: dynamic arrays */<br><br> foreach (array(1, 2, 3, 4, 5) as $v) {<br> echo "$v\n";<br> }<br> ?>

Unpacking nested arrays with list()

(PHP 5 >= 5.5.0)

PHP 5.5 added the ability to iterate over an array of arrays and unpack the nested array into loop variables by providing a list() as the value.

For example:

<?php <br> $array = [<br> [1, 2],<br> [3, 4],<br> ];<br><br> foreach ($array as list($a, $b)) {<br> // $a contains the first element of the nested array,<br> // and $b contains the second element.<br> echo "A: $a; B: $b\n";<br> }<br> ?>

The above example will output:

A: 1; B: 2
A: 3; B: 4
登录后复制

You can provide fewer elements in the list() than there are in the nested array, in which case the leftover array values will be ignored:

<?php <br> $array = [<br> [1, 2],<br> [3, 4],<br> ];<br><br> foreach ($array as list($a)) {<br> // Note that there is no $b here.<br> echo "$a\n";<br> }<br> ?>

The above example will output:

1
3
登录后复制

A notice will be generated if there aren't enough array elements to fill the list():

<?php <br> $array = [<br> [1, 2],<br> [3, 4],<br> ];<br><br> foreach ($array as list($a, $b, $c)) {<br> echo "A: $a; B: $b; C: $c\n";<br> }<br> ?>

The above example will output:

Notice: Undefined offset: 2 in example.php on line 7
A: 1; B: 2; C: 

Notice: Undefined offset: 2 in example.php on line 7
A: 3; B: 4; C: 
登录后复制

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/845435.htmlTechArticlephp之foreach遍历数组 foreach (PHP 4, PHP 5) The foreach construct provides an easy way to iterate over arrays. foreach works only on arrays and objects, and will issue an erro...
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号