PHP 获取上一个数组元素,知道当前数组键
我有一个包含特定键的数组:
array(
420 => array(...),
430 => array(...),
555 => array(...)
)
在我的应用程序中,我知道当前键(例如)。我想得到前面的数组元素。在此示例中,它是具有键 的数组元素。如何在 PHP 中执行此操作?我试图使用,但对于这个函数,我们应该知道当前的数组元素。我没有找到函数,是什么设置了当前的数组元素。555430prev()
我有一个包含特定键的数组:
array(
420 => array(...),
430 => array(...),
555 => array(...)
)
在我的应用程序中,我知道当前键(例如)。我想得到前面的数组元素。在此示例中,它是具有键 的数组元素。如何在 PHP 中执行此操作?我试图使用,但对于这个函数,我们应该知道当前的数组元素。我没有找到函数,是什么设置了当前的数组元素。555430prev()
一个选项:
要将内部指针设置为某个位置,您必须将其转发(使用key和next,也许在之前进行重置以确保从数组的开头开始):
while(key($array) !== $key) next($array);
然后你可以使用 prev():
$prev_val = prev($array);
// and to get the key
$prev_key = key($array);
根据之后要对阵列执行的操作,您可能需要重置内部指针。
如果数组中不存在键,则有一个无限循环,但这可以通过以下方法解决:
while(key($array) !== null && key($array) !== $key)
当然不会再给你正确的值了,但我假设你正在寻找的键无论如何都会在数组中。prev
具有快速查找功能的解决方案:(如果您必须多次执行此操作)
$keys = array_flip(array_keys($array));
$values = array_values($array);
return $values[$keys[555]-1];
array_fliparray_keys将返回一个数组,将键映射到它们在原始数组中的位置,例如.(($array));array(420 => 0, 430 => 1, 555 => 2)
array_values() 返回一个数组,将位置映射到值,例如 .array(0 => /* value of $array[420] */, ...)
因此,有效地返回前面的元素,假设当前元素具有键 555。$values[$keys[555]-1]
替代解决方案:
$keys = array_keys($array);
return $array[$keys[array_search(555, $keys)-1]];