【问题标题】:Why does current() skip over first array element in a foreach() statement? [duplicate]为什么 current() 会跳过 foreach() 语句中的第一个数组元素? [复制]
【发布时间】:2012-11-23 23:31:39
【问题描述】:

此代码输出:1 1 1 1

我预计是 0 0 0 0 或 0 1 2 3

<?php 
$arr = array(0,1,2,3);
foreach($arr as $i)
{
    echo current($arr), ' ';
}
?>

【问题讨论】:

    标签: php foreach


    【解决方案1】:

    可能重复:Why does PHP's foreach advance the pointer of its array (only) once?

    在初始化数组后,您会注意到当前索引是0

    $arr = array(0,1,2,3);
    echo current($arr); // outputs 0
    

    当您进入 foreach 时,它会将内部数组指针加 1,使“当前”值 1

    注意数组是如何通过reference (http://php.net/manual/en/function.current.php) 传递给current() 函数的。这会导致您遇到的行为。

    如果您想获取数组的键,可以将 foreach 更改为:

    foreach($arr as $key => $i)
    {
    
    }
    

    【讨论】:

    • 噢耶,这是一个骗局,我该怎么办?
    猜你喜欢
    • 2017-07-28
    • 2014-06-04
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多