【问题标题】:Get value of previous array key [duplicate]获取前一个数组键的值[重复]
【发布时间】:2019-02-12 14:32:29
【问题描述】:

所以我尝试这样做:

$array = array('first'=>'111', 'second'=>'222', 'third'=>'333');

var_dump(prev($array["second"]));

希望得到111,但我得到NULL。为什么?

$array["second"] 返回222。当我们使用PHP的prev()函数时,我们不应该得到111吗?

如果数组存在,如何使用key获取数组的前一个值?

【问题讨论】:

  • 来自手册 - prev — Rewind the internal array pointer 如果你没有在数组上循环,那么内部数组指针将是数组中的第一次出现
  • 为什么不直接跳过键,让键成为索引?例如0, 1, 2 - 那么如果你将数组元素作为 $key => $value 你可以将 $key 减去 1 例如$array[$key-1]
  • 这个问题已经有了答案。请检查已存在的here
  • @dpap 将其标记为欺骗^^ :)
  • @dpap 绝对是一个骗局,抱歉我没有找到答案。我接受了你的复制请求。

标签: php arrays


【解决方案1】:

$array["second"] 的当前值不是数组,prev 将数组作为参数。

你必须移动$array的内部指针,然后得到之前的值。

$array = array('first'=>'111', 'second'=>'222', 'third'=>'333');
while (key($array) !== "second") next($array);
var_dump(prev($array));

【讨论】:

  • 这太完美了,谢谢!
【解决方案2】:

prev 函数需要一个数组作为参数,但您传递的是一个字符串。

$array["second"] 计算结果为 '222'

【讨论】:

  • 哦,这就是它不起作用的原因!谢谢(你的)信息。如何使用当前值的键获取上一个值?
【解决方案3】:

在这种情况下,您直接指向前一个值,而不是迭代数组。

$array = array('first'=>'111', 'second'=>'222', 'third'=>'333');
$keys = array_flip(array_keys($array));
$values = array_values($array);
var_dump($values[$keys['second']-1]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 2013-12-27
    • 2017-03-04
    • 2017-06-05
    • 2016-12-02
    • 2020-01-06
    • 2021-07-16
    • 2016-05-30
    相关资源
    最近更新 更多