我试图覆盖数组中的[19],每次都覆盖第一个值。 [19]不会总是相同,因为它填充了传递到数组中的ID。我想根据某些验证将第一个索引替换为新的ID。
我尝试取消设置该值并将其替换,但是它会创建一个新条目(如下所示)。
<pre style='font-size:11px'>
[------- var dumping... -------]
arrcount: 2
Array
(
[19] => Array
(
[quantity] => 1
)
[] => 50
)
</pre>
我不想在数组中有像[] => 50这样的新条目,而是希望将[19]替换为[50],同时保持数量值不变。请记住,这些数字不是静态的,如果是基于外部验证传递的ID,则它们是动态的。
答案 0 :(得分:0)
只需将值分配给新密钥,然后取消设置旧密钥。
$arr[$newkey] = $arr[$oldkey];
if (isset($arr[$oldkey])) {
unset($arr[$oldkey]);
}
答案 1 :(得分:0)
欢迎使用StackOverflow。
array_shift(),然后是array_unshift将是您要寻找的。
https://www.php.net/manual/en/function.array-unshift.php
如果您发布代码示例,我们可以提供更多帮助。
答案 2 :(得分:0)
获取第一个键和第一个值。
$first_key = array_key_first($array);
$first_value = $array[$first_key];
/**
* Or for PHP < 7.3
* $first_value = reset($array);
* $first_key = key($array);
*/
取消设置第一个键,然后将其余键与重新设置的第一个值合并。
unset($array[$first_key]);
$array = [50 => $first_value] + $array;
array_shift
对此不起作用,因为它会重新索引数组。请记住,如果数组碰巧有另一个索引为50的元素,则该元素将被删除,因为键必须是唯一的。