1

我有这种数组

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

等等

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

4

5 回答 5

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

这应该解决它。

于 2013-09-06T19:00:17.720 回答
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 相同。对不起,如果我弄错了,我想这就是你想要做的,我希望。

干杯。

于 2013-09-06T19:06:40.563 回答
1

只需保存上一个密钥。

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

    }
于 2013-09-06T18:58:44.650 回答
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);
}
于 2013-09-06T18:59:08.263 回答
1

在每次迭代中保存前一个值

$prevValue = 0;
foreach ($arr as $value) {
    echo $key . '=>' . $prevValue . '=>' . $value;
    $prevValue = $value;
}
于 2013-09-06T18:59:14.793 回答