我正在寻找一种将值推入具有自动递增键的数组的方法。问题:我想知道插值的关键。
有办法做到这一点吗?将值插入数组并获取插入值的索引?
当一个项目从数组中删除时,数组的计数不等于下一个insert-key。
由于 亚历
答案 0 :(得分:0)
您可以在array_push之后使用end()
。你将得到最后一个被插入的元素。
end()将数组的内部指针前进到最后一个元素,并返回其值。
key()返回当前数组位置的索引元素。
请看下面的例子:
$array = array(
'0' => 'one',
'1' => 'two',
'2' => 'three',
);
end($array); // move the pointer to the end of array
$key = key($array); // fetches the key of the element by the pointer
var_dump($key);
你可以尝试一个更快的解决方案。
$last_key = key( array_slice( $array, -1, 1, TRUE ) );
echo $last_key; //output "last"
希望这会对你有所帮助。
答案 1 :(得分:0)
围绕array_push()
的简单包装函数可以提供帮助:
function array_push_autoinc(array &$array, $item) {
$next = sizeof($array);
$array[$next] = $item;
return $next;
}
答案 2 :(得分:0)
我找到了解决方案:
这是我的 example-array :
$array = [2 => "two", 1 => "one", "four" => 4];
如您所见,有一些字符串和整数用作数组键。
首先,我需要通过键 排序数组:
ksort($array);
现在数组看起来像这样:
$array = ["four" => 4, 1 => "one", 2 => "two"];
现在我可以将指针移动到数组的结尾,获取密钥(所以我有最高的数字键):
end($array);
$key = key($array);
我现在将密钥增加1 并使用新密钥插入值:
$key++;
$array[$key] = "three";
现在保存密钥在变量$key
中,数组如下所示:
$array = ["four" => 4, 1 => "one", 2 => "two", 3 => "three"];
$key = 3;
就是这样。
现在为你们所有的脚本小子提供完整的代码:
$array = [2 => "two", 1 => "one", "four" => 4];
ksort($array);
end($array);
$key = key($array);
$key++;
$array[$key] = "three";