PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
自PHP 5 起,还可能遍历对象。
注意: 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。
注意: 除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此数组指针不会被 each() 结构改变,对返回的数组单元的修改也不会影响原数组。不过原数组的内部指针的确在处理数组的过程中向前移动了。假定 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。
自 PHP 5 起,可以很容易地通过在 $value 之前加上 & 来修改数组的单元。此方法将以引用赋值而不是拷贝一个值。
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
?>
此方法仅在被遍历的数组可以被引用时才可用(例如是个变量)。
注意: foreach 不支持用“@”来抑制错误信息的能力。
用户可能注意到了以下的代码功能完全相同:
<?php
$arr = array("one", "two", "three");
reset($arr);
while (list(, $value) = each($arr)) {
echo "Value: $value<br>\n";
}
foreach ($arr as $value) {
echo "Value: $value<br />\n";
}
?>
以下代码功能也完全相同:
<?php
$arr = array("one", "two", "three");
reset($arr);
while (list($key, $value) = each($arr)) {
echo "Key: $key; Value: $value<br />\n";
}
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value<br />\n";
}
?>
示范用法的更多例子:
<?php
/* 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 key 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";
}
?>
分享到:
相关推荐
while(list($key, $value) = each($numbers)) { echo "$key: $value\n"; } ``` 在实际开发中,数组的循环输出常用于各种场景,如: - 数据展示:从数据库查询结果中获取数据并显示在网页上。 - 数据处理:计算...
在PHP编程中,数组是一种非常重要的数据结构,它允许存储和操作多个值在一个单一的变量中。数组分为两种主要类型:数字索引数组和关联数组。数字索引数组的键是自动分配的整数,通常从0开始,而关联数组的键可以是...
在PHP中,遍历数组是常见的操作,这里我们将探讨三种主要的方法:`list()`、`each()`和`while`循环。这些方法可以帮助我们有效地访问数组中的每一个元素。 首先,我们来看`each()`函数。`each()`函数需要一个数组...
其中,PHP 的数组处理能力非常强大,提供了丰富的内置函数来操作数组。根据给定的内容,我们将对 PHP 的数组函数进行分类,并详细解释每一类中的典型函数。 #### 统计(Stat) 这类函数主要用于统计数组的各种属性...
通过指针,我们可以方便地访问和操作数组中的元素。 有几个专门用于管理数组指针的内置函数: 1. `key()`:这个函数返回当前元素的键(如果数组是关联数组的话)或索引(如果数组是数字索引数组)。在指针位于数组...
在示例5中,`reset()` 用于在 `foreach` 循环后重新开始遍历 `colors` 数组,以便用 `list()` 和 `each()` 进行不同的遍历。 - **each()**: `each()` 函数返回当前数组键值对,并将指针向后移动一位。返回的数组...
2. `list()`和`each()`函数结合`while`循环,可以逐个处理数组元素。`each()`函数返回当前指针位置的键值对,并向前移动指针。`list()`则用于解构数组,将返回的键值对赋值给变量。例如: ```php $a = array(1, 2,...
本篇文章将深入探讨几种常见的PHP遍历数组的方法,包括`foreach`、`while`以及`for`循环,同时也会提及一些与数组操作相关的辅助函数,如`key()`、`reset()`和`each()`。 首先,`foreach`循环是最常用的一种遍历...
如果调用`each()`时没有参数,它会默认使用最近操作的数组。返回的结果是一个包含四个元素的关联数组:`0`(键名),`1`(键值),`key`(键名),`value`(键值)。例如: ```php $array = array('name' => 'John'...
3. **联合使用 `list()`、`each()` 和 `while` 循环遍历数组**: - 这种方法主要用于遍历关联数组。 - 示例: ```php while (list($key, $value) = each($arr)) { echo "\$arr[$key] = $value "; } ``` ...
- **指针操作**:PHP提供了`current()`, `key()`, `next()`, `prev()`, `end()`, 和 `reset()`等函数来操作数组的内部指针,实现遍历: ```php $arr = array("name"=>"小李", "sex"=>"女", "age"=>"20"); echo ...
为了再次从头开始遍历数组,可以使用 `reset()` 函数将内部指针重置到数组的开头。 4. 循环控制语句: - `break` 用于立即退出循环。 - `continue` 使当前循环迭代结束,跳到下一次迭代的开始。 - `exit` 和 `...
需要注意的是,当数组遍历完毕后,数组指针会停留在数组末尾的下一个位置,此时each()函数将始终返回false,因此需要使用reset()函数将指针重置到数组的开始位置。而while()循环则用于根据each()函数返回值是否为数...
`each()`函数会返回当前数组的键值对,并将内部指针向前移动一步,避免了`foreach`的副本问题,适合处理大型数组。 除了上述方法,PHP还提供了其他数组操作函数,如`count()`用于获取数组元素数量,`array_push()`...
通常使用`foreach`循环遍历数组,`foreach`是PHP处理数组的强大工具,可以轻松地访问每个元素及其对应的键。 8. **数组函数的效率** 虽然PHP提供了丰富的数组函数,但在处理大量数据时,应考虑函数的性能,如使用...
另外,`list()`和`each()`函数也可以用于数组的迭代,但它们在现代PHP版本中已不再推荐使用,因为有更好的替代方案,如`foreach`。 在实际开发中,理解并熟练运用这些数组操作和遍历技巧,能够提高代码的可读性和...
PHP数组的一个特别之处在于它对指针操作的支持,这使得用户能够通过指针来遍历数组,并且对数组进行读取或修改。 PHP数组的指针操作涉及到了一系列内建函数,这些函数能够控制数组内部指针的位置和行为。比如说,`...