PHP使用字符串键foreach上一个元素

时间:2013-09-06 18:56:05

标签: php arrays

我有这种数组

Array
(
[12-12] => 9
[01-13] => 10
[02-13] => 11
[03-13] => 14
[05-13] => 16
[09-13] => 17
)

用简单的

 foreach ($arr as $key=>$value)

我可以访问每个键和元素。

但我需要从第二个元素获得前一个元素:

$i=1;
foreach ($arr as $key=>$value) {
  if ($i==1) {
    echo $key .'=> 0 '.  $value;
  } else {
    echo $key .'=>'. $arr[$key-1] .'=>'. $value;
  }
 $i++
}

我需要打印类似的东西:

12-12 => 0 => 9
01-13 => 9 => 10
02-13 => 10 => 11

等等

“显然”它不起作用,因为字符串键。有帮助吗?谢谢!

5 个答案:

答案 0 :(得分:4)

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

这应该解决它。

答案 1 :(得分:2)

许多人都在谈论只存储以前的密钥,我认为这是正确的;但是,为了多样化,你也可以使用array_keys,如下所示:

$keys=array_keys($arr);
$i=0;
foreach ($arr as $key=>$value) {
  if ($i==0) {
    echo $key .'=> 0 '.  $value;
  } else {
    echo $key .'=>'. $arr[$keys[$i-1]] .'=>'. $value;
  }
 $i++
}

请参阅,$ keys将包含仅具有$ arr键的数组,因此引用$ keys [$ i]与在foreach循环中为$ i记录打印$ key相同。对不起,如果我弄错了,我想这就是你想要做的事情,我希望。

干杯。

答案 2 :(得分:1)

只需保存上一个键即可。

    $prevKey = null;
    foreach ($arr as $key=>$value) {
      if ($i==1) {
        echo $key .'=> 0 '.  $value;
      } else {
        echo $key .'=>'. $arr[$prevKey] .'=>'. $value;
      }
    $prevKey = $key;

    }

答案 3 :(得分:1)

你有正确的想法,只是错误的用法:

$prev = null;
foreach ($arr as $key=>$value) {
    if (is_array($prev)) {
        print_r($prev)
        echo $key .'=> 0 '.  $value;
    } else {
        echo $key .'=>'. $arr[$key-1] .'=>'. $value;
    }
    $prev = array($key, $value);
}

答案 4 :(得分:1)

在每次迭代中保存先前的值

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