`
deepfuture
  • 浏览: 4412626 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80134
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70355
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103602
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:286588
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15056
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67794
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32292
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46075
社区版块
存档分类
最新评论

php-数组操作foreach、each、reset、list

阅读更多

foreach

PHP 4 引入了 foreach 结构,和 Perl 以及其他语言很像。这只是一种遍历数组简便方法。foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

    

 

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key

自PHP 5 起,还可能遍历对象

注意: foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()

注意: 除非数组是被引用foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此数组指针不会被 each() 结构改变,对返回的数组单元的修改也不会影响原数组。不过原数组的内部指针的确在处理数组的过程中向前移动了。假定 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。

自 PHP 5 起,可以很容易地通过在 $value 之前加上 & 来修改数组的单元。此方法将以引用赋值而不是拷贝一个值。

<?php
$arr 
= array(1234);
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(12317);

foreach (
$a as $v) {
   echo 
"Current value of \$a: $v.\n";
}

/* foreach example 2: value (with key printed for illustration) */

$a = array(12317);

$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(12345) as $v) {
    echo 
"$v\n";
}
?>

each

(PHP 4, PHP 5)

each — 返回数组中当前的键/值对并将数组指针向前移动一步

说明

array each ( array &$array )

返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 01keyvalue。单元 0key 包含有数组单元的键名,1value 包含有数据。

如果内部指针越过了数组的末端,则 each() 返回 FALSE

 

例 288. each() 例子

<?php
$foo 
= array("bob""fred""jussi""jouni""egon""marliese");
$bar each($foo);
print_r($bar);
?>

$bar 现在包含有如下的键/值对:

Array
{
    [1] => bob
    [value] => bob
    [0] => 0
    [key] => 0
}

      

 

 

<?php
$foo 
= array("Robert" => "Bob""Seppo" => "Sepi");
$bar each($foo);
print_r($bar);
?>

$bar 现在包含有如下的键/值对:

Array
{
    [1] => Bob
    [value] => Bob
    [0] => Robert
    [key] => Robert
}

      

 

each() 经常和 list() 结合使用来遍历数组,例如:

例 289. 用 each() 遍历数组

<?php
$fruit 
= array('a' => 'apple''b' => 'banana''c' => 'cranberry');
reset($fruit);
while (list(
$key$val) = each($fruit)) {
    echo 
"$key => $val\n";
}
?>

上例将输出:

a => apple
b => banana
c => cranberry

      

 

在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()

小心

因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上边的例子中如果我们在循环内部将 $fruit 赋给了另一个变量的话将会导致无限循环。

 

 
分享到:
评论

相关推荐

    php代码-数组的循环输出

    while(list($key, $value) = each($numbers)) { echo "$key: $value\n"; } ``` 在实际开发中,数组的循环输出常用于各种场景,如: - 数据展示:从数据库查询结果中获取数据并显示在网页上。 - 数据处理:计算...

    PHP 数组遍历方法大全(foreach,list,each)

    在PHP编程中,数组是一种非常重要的数据结构,它允许存储和操作多个值在一个单一的变量中。数组分为两种主要类型:数字索引数组和关联数组。数字索引数组的键是自动分配的整数,通常从0开始,而关联数组的键可以是...

    PHP循环遍历数组的3种方法list()、each()和while总结

    在PHP中,遍历数组是常见的操作,这里我们将探讨三种主要的方法:`list()`、`each()`和`while`循环。这些方法可以帮助我们有效地访问数组中的每一个元素。 首先,我们来看`each()`函数。`each()`函数需要一个数组...

    php数组函数分类

    其中,PHP 的数组处理能力非常强大,提供了丰富的内置函数来操作数组。根据给定的内容,我们将对 PHP 的数组函数进行分类,并详细解释每一类中的典型函数。 #### 统计(Stat) 这类函数主要用于统计数组的各种属性...

    PHP数组的指针.doc

    通过指针,我们可以方便地访问和操作数组中的元素。 有几个专门用于管理数组指针的内置函数: 1. `key()`:这个函数返回当前元素的键(如果数组是关联数组的话)或索引(如果数组是数字索引数组)。在指针位于数组...

    PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)

    在示例5中,`reset()` 用于在 `foreach` 循环后重新开始遍历 `colors` 数组,以便用 `list()` 和 `each()` 进行不同的遍历。 - **each()**: `each()` 函数返回当前数组键值对,并将指针向后移动一位。返回的数组...

    数组php学习资料PPT学习教案.pptx

    2. `list()`和`each()`函数结合`while`循环,可以逐个处理数组元素。`each()`函数返回当前指针位置的键值对,并向前移动指针。`list()`则用于解构数组,将返回的键值对赋值给变量。例如: ```php $a = array(1, 2,...

    基于PHP遍历数组的方法汇总分析

    本篇文章将深入探讨几种常见的PHP遍历数组的方法,包括`foreach`、`while`以及`for`循环,同时也会提及一些与数组操作相关的辅助函数,如`key()`、`reset()`和`each()`。 首先,`foreach`循环是最常用的一种遍历...

    PHP程序设计-3期(KC016) 2.7.3数组遍历拓展知识.doc

    如果调用`each()`时没有参数,它会默认使用最近操作的数组。返回的结果是一个包含四个元素的关联数组:`0`(键名),`1`(键值),`key`(键名),`value`(键值)。例如: ```php $array = array('name' =&gt; 'John'...

    数组与数据结构

    3. **联合使用 `list()`、`each()` 和 `while` 循环遍历数组**: - 这种方法主要用于遍历关联数组。 - 示例: ```php while (list($key, $value) = each($arr)) { echo "\$arr[$key] = $value "; } ``` ...

    PHP数组的基本操作及遍历数组的经典操作实例

    - **指针操作**:PHP提供了`current()`, `key()`, `next()`, `prev()`, `end()`, 和 `reset()`等函数来操作数组的内部指针,实现遍历: ```php $arr = array("name"=&gt;"小李", "sex"=&gt;"女", "age"=&gt;"20"); echo ...

    PHP循环语句笔记(foreach,list)

    为了再次从头开始遍历数组,可以使用 `reset()` 函数将内部指针重置到数组的开头。 4. 循环控制语句: - `break` 用于立即退出循环。 - `continue` 使当前循环迭代结束,跳到下一次迭代的开始。 - `exit` 和 `...

    PHP数组遍历的几种常见方式总结

    需要注意的是,当数组遍历完毕后,数组指针会停留在数组末尾的下一个位置,此时each()函数将始终返回false,因此需要使用reset()函数将指针重置到数组的开始位置。而while()循环则用于根据each()函数返回值是否为数...

    一步一步学习PHP(8) php 数组

    `each()`函数会返回当前数组的键值对,并将内部指针向前移动一步,避免了`foreach`的副本问题,适合处理大型数组。 除了上述方法,PHP还提供了其他数组操作函数,如`count()`用于获取数组元素数量,`array_push()`...

    php代码-常见函数:数组

    通常使用`foreach`循环遍历数组,`foreach`是PHP处理数组的强大工具,可以轻松地访问每个元素及其对应的键。 8. **数组函数的效率** 虽然PHP提供了丰富的数组函数,但在处理大量数据时,应考虑函数的性能,如使用...

    PHP中使用数组指针函数操作数组示例

    另外,`list()`和`each()`函数也可以用于数组的迭代,但它们在现代PHP版本中已不再推荐使用,因为有更好的替代方案,如`foreach`。 在实际开发中,理解并熟练运用这些数组操作和遍历技巧,能够提高代码的可读性和...

    php 数组的指针操作实现代码

    PHP数组的一个特别之处在于它对指针操作的支持,这使得用户能够通过指针来遍历数组,并且对数组进行读取或修改。 PHP数组的指针操作涉及到了一系列内建函数,这些函数能够控制数组内部指针的位置和行为。比如说,`...

Global site tag (gtag.js) - Google Analytics