PHP之each()函数输出空白问题

each()函数

(PHP 4, PHP 5, PHP 7)

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

Warning

This function has been DEPRECATED as of PHP 7.2.0. Relying on this function is highly discouraged.

说明

array each ( array &$array )

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

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

foreach()函数

(PHP 4, PHP 5, PHP 7)

foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:

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

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

注意

each()和foreach()都会移动指针

为什么输出空白?

一定是因为在使用each()函数之前使用了foreach()函数

这时要使用reset()函数将指针初始化到0开始,即数组起始位置

<?php
    $arr=array('name'=>'Waldo','sex'=>'male','age'=>'20');
    var_dump($arr);
    echo '<hr>';

    foreach($arr as $key => $value){
        echo $key.' => '.$value.'<br>';
    }
    echo '<br>';

    reset($arr);
    //因为上面数组的指针已经移动到数组末尾,下面使用each的时候发生指针越界,返回false,导致无法输出值。
    //因此使用reset()函数将指针初始化到0开始,即数组起始位置。
    echo "使用reset()后将有如下输出:";

    while(list($k, $v)=each($arr))
    { 
        echo $k.'=>'.$v.'<br>';
    }
?>  

输出如图:

TIM截图20180906164521.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组的概述 PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方...
    dptms阅读 1,629评论 0 4
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,381评论 0 20
  • 参考资料:PHP5 权威编程 PHP 中的函数 函数的定义:function 函数名($形参1,$形参2....
    _1633_阅读 594评论 0 2
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 2,001评论 1 24
  • 今夜的天空 没有星星,没有月亮 有的只是雨水的影子 一滴一滴往下落 落到我心坎上 却 湿润了眼眶
    潇湘夜雨几多萧阅读 146评论 0 0