使用array的next()不能打印正确的值

时间:2014-09-09 08:11:08

标签: php arrays

如果我有这些数据,如何获得当前和&基于特定键的下一个数组值

$data = array(
                array(
                    "name"=>"Joseph",
                    "location"=>"Wisconsin"
                ),
                array(
                    "name"=>"Sally",
                    "location"=>"Toronto"
                )
            );

这就是我这样做的方式,但似乎没有显示我的预期。请帮助。

foreach ($data as $val)
{
    echo 'current:'.$val['name'].'<br/>';

    $nextval = next($val);
    echo 'next:'.$nextval['name'].'<br/>';
}

这是正在打印的内容

current:Joseph
next:W
current:Sally
next:T

我希望它是

current:Joseph
next:Sally
current:Sally
next:[..next value..]

3 个答案:

答案 0 :(得分:1)

您可以尝试:

for ($i = 0; $i < count($data) - 1; $i++) {
  $current = $data[$i];
  $next = $data[$i + 1];
}

答案 1 :(得分:1)

将您的foreach循环更改为:

foreach ($data as $key=>$val)
{
    echo 'current:'.$val['name'].'<br/>';
    $nextval = $data[$key+1];
    echo 'next:'.$nextval['name'].'<br/>';
}

它有你要求的行为。

答案 2 :(得分:-1)

你不能使用foreach因为foreach不使用数组的内部指针。

最好使用简单的for

for ($i = 0; $i < count($array); $i++)
    {
    echo $array[$i]['name'] . PHP_EOL;
    if (isset($array[$i+1]['name']))
        echo $array[$i+1]['name'] . PHP_EOL;
    }

但是。如果你想使用next,你可以循环。

while (key($array) !== null)
    {
    echo current($array)['name'];
    echo next($array)['name'];
    }