如何使用新值替换此数组的第一个值

时间:2019-07-19 14:40:31

标签: php arrays

我试图覆盖数组中的[19],每次都覆盖第一个值。 [19]不会总是相同,因为它填充了传递到数组中的ID。我想根据某些验证将第一个索引替换为新的ID。

我尝试取消设置该值并将其替换,但是它会创建一个新条目(如下所示)。

<pre style='font-size:11px'>
[------- var dumping... -------]
arrcount: 2
Array
(
    [19] => Array
        (
            [quantity] => 1
        )

    [] => 50
)
</pre>

我不想在数组中有像[] => 50这样的新条目,而是希望将[19]替换为[50],同时保持数量值不变。请记住,这些数字不是静态的,如果是基于外部验证传递的ID,则它们是动态的。

3 个答案:

答案 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的元素,则该元素将被删除,因为键必须是唯一的。