我在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()只适用于单维数组吗?现在键值被重置......
答案 0 :(得分:31)
如果您不知道第一项key
是什么:
// Make sure to reset the array's current index
reset($array);
$key = key($array);
unset($array[$key]);
答案 1 :(得分:5)
$array=array("a"=>"123","b"=>"234","c"=>"345");
unset($array["a"]) ;
var_dump($array) ;
另外,您使用的是哪个版本的PHP?
array_shift
使用字符串索引数组对我来说很好,我得到了预期的结果。
答案 2 :(得分:1)
这个问题的解决方案如下:
<?php
unset($array[current(array_keys($array))]);
?>
删除第一个元素而不影响键值。
答案 3 :(得分:0)
<?php function array_kshift(&$array)
{
list($k) = array_keys($array);
$r = array($k=>$array[$k]);
unset($array[$k]);
return $r;
}
// test it on a simple associative array
$array=array("a"=>"123","b"=>"234","c"=>"345");
array_kshift($array);
print_r($array);
?>