2015-05-27
(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) statementforeach (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:
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.
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element
?>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:
foreach (array(1, 2, 3, 4) as &$value) {
$value = $value * 2;
}
?>WarningReference 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:
$arr = array("one", "two", "three");
reset($arr);
while (list(, $value) = each($arr)) {
echo "Value: $value
/n";
}
foreach ($arr as $value) {
echo "Value: $value
/n";
}
?>The following are also functionally identical:
$arr = array("one", "two", "three");
reset($arr);
while (list($key, $value) = each($arr)) {
echo "Key: $key; Value: $value
/n";
}
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value
/n";
}
?>Some more examples to demonstrate usage:
/* foreach example 1: value only */
$a = array(1, 2, 3, 17);
foreach ($a as $v) {
echo "Current value of /$a: $v./n";
}
/* foreach example 2: value (with its manual access notation printed for illustration) */
$a = array(1, 2, 3, 17);
$i = 0; /* for illustrative purposes only */
foreach ($a as $v) {
echo "/$a[$i] => $v./n";
$i++;
}
/* foreach example 3: key and value */
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach ($a as $k => $v) {
echo "/$a[$k] => $v./n";
}
/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2/n";
}
}
/* foreach example 5: dynamic arrays */
foreach (array(1, 2, 3, 4, 5) as $v) {
echo "$v/n";
}
?>(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:
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)) {
// $a contains the first element of the nested array,
// and $b contains the second element.
echo "A: $a; B: $b/n";
}
?>The above example will output:
A: 1; B: 2A: 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:
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a)) {
// Note that there is no $b here.
echo "$a/n";
}
?>The above example will output:
13
A notice will be generated if there aren't enough array elements to fill the list():
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b, $c)) {
echo "A: $a; B: $b; C: $c/n";
}
?>The above example will output:
Notice: Undefined offset: 2 in example.php on line 7A: 1; B: 2; C: Notice: Undefined offset: 2 in example.php on line 7A: 3; B: 4; C:
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
6
将视频设置为Android手机开机动画的教程
12-11
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
常用dos命令及语法
09-27
PHP中include和require区别之我见
2014-09-05
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
2017-04-12
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
零基础的初学者怎样学习java,或者应该先学什么?
2022-03-21
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
学习使用C语言/C++编程的7个步骤!超赞~
2022-03-20
球球大作战汉化版下载v19.7.1 安卓版
其它手游 170.54MB
下载
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游 34.82MB
下载
葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游 34.82MB
下载
葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游 34.82MB
下载
葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游 34.82MB
下载
像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游 206.87MB
下载
葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游 34.82MB
下载
末日餐厅安卓版下载v1.35安卓版
其它手游 73.98MB
下载葫芦侠十楼免费破解版下载v4.4.0.6安卓版
下载
葫芦侠8楼最新破解版下载v4.4.0.6安卓版
下载
猫娘乐园世界连结正版下载v1.9.1 安卓版
下载
像素漫斗全员下载v1.00安卓版
下载
葫芦侠8楼手机版下载v4.4.0.6安卓版
下载
末日餐厅正版官网入口下载v1.35安卓版
下载
我的汉克狗正版下载v26.4.1.48473 安卓版
下载
像素漫斗u鼬神最新版本下载v1.00安卓版
下载