【发布时间】:2011-09-01 20:02:24
【问题描述】:
如何在php 的数组中获得最高 key/index?我知道如何为价值观做这件事。
例如:我想从这个数组中获取10 作为integer 值:
$arr = array(1 => "A", 10 => "B", 5 => "C");
我知道如何编写代码,但我在问自己是否也有这样的功能。
【问题讨论】:
标签: php php arrays key highest
如何在php 的数组中获得最高 key/index?我知道如何为价值观做这件事。
例如:我想从这个数组中获取10 作为integer 值:
$arr = array(1 => "A", 10 => "B", 5 => "C");
我知道如何编写代码,但我在问自己是否也有这样的功能。
【问题讨论】:
标签: php php arrays key highest
这应该可以正常工作
$arr = array( 1 => "A", 10 => "B", 5 => "C" );
max(array_keys($arr));
【讨论】:
max 的 PHP 手册:If an empty array is passed, then FALSE will be returned and an E_WARNING error will be emitted.
你可以通过这种方式获得最大密钥:
<?php
$arr = array("a"=>"test", "b"=>"ztest");
$max = max(array_keys($arr));
?>
【讨论】:
我有一种情况需要获取数组中的下一个可用键,即highest + 1。
例如,如果数组是$data = ['1' => 'something, '34' => 'something else'],那么我需要计算35 以向数组中添加一个新元素,该元素的键比其他任何一个都高。在空数组的情况下,我需要 1 作为下一个可用键。
这是有效的解决方案:
$highest = 0;
foreach ($data as $idx => $dummy) {
if ($idx > $highest) $highest = $idx;
}
$highest++;
它适用于所有情况,无论是否为空数组。如果你只需要找到最高的键而不是highest key + 1,删除最后一行。
如果数组为空,您将获得 0 的值。
【讨论】:
$keys = array_keys($arr);
$keys = rsort($keys);
print $keys[0];
应该打印“10”
【讨论】:
尝试max() 函数,查看该页面上的第一条评论。
【讨论】:
function getMaxKey(array $array): ?int
{
if ($array === []) {
return null;
}
return max(0, ...array_keys($array));
}
假设你没有像 int -1 这样的否定键
【讨论】:
$higestKey = 0;
foreach ($data as $key => $value) {
if (strlen($key) > $higestKey) $higestKey = strlen($key);
}
【讨论】: