如何在不更改其键值的情况下删除数组的第一个元素?

2022-08-30 12:56:52

php 中有一个数组

<?php
$array=array("a"=>"123","b"=>"234","c"=>"345");
array_shift($array);
//array("0"=>"234","1"=>"345");
?>

如果我使用这个函数,那么键值就会改变。我希望我的密钥值保持不变。如何在不影响数组键值的情况下删除第一个元素。我的答案应该是这样的

array("b"=>"234","c"=>"345");

注:请不要使用 foreach();我想通过php中的现有数组函数来做到这一点

array_splice函数正在为上述数组工作。但请考虑以下数组

<?php
$array = Array
(
    '39' => Array
        (
            'id' => '39',
            'field_id' => '620'
           
        ),

    '40' => Array
        (
            'id' => '40',
            'field_id' => '620',
            'default_value' => 'rrr',
          
));

array_splice($array, 0, 1);
print_r($array);
?>

它显示的答案如下:

Array ( [0] => Array ( [id] => 40 [field_id] => 620 [default_value] => rrr ) )

我可以知道原因吗?array_splice() 是否仅适用于单维数组?现在键值已重置...


答案 1

如果您不知道第一项是什么:key

// Make sure to reset the array's current index
reset($array);

$key = key($array);
unset($array[$key]);

答案 2
$array=array("a"=>"123","b"=>"234","c"=>"345");
unset($array["a"]) ;
var_dump($array) ;

另外,你使用什么版本的PHP?

array_shift使用字符串索引数组对我来说工作正常,我得到了预期的结果。