我有这种数组
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
等等
“显然”它不起作用,因为字符串键。有帮助吗?谢谢!
答案 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;
}