PHP通过键取消移位关联数组

时间:2018-04-18 13:58:48

标签: php arrays

我试图使用unshift将数组项移动到数组的顶部,但是我得到了意想不到的结果:

$all_people = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
   $new_value = $all_people['Ben'];
   array_unshift($all_people, $new_value);

在这里,我希望有一个数组,其中"Ben"=>"37是第一项,但我最终得到了这个:

array(4) { [0]=> int(0) [1]=> string(5) "Peter" [2]=> string(3) "Ben" [3]=> string(3) "Joe" }

第一个元素是空的,“Ben”没有移动到我认为会发生的顶部。有人可以帮我吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

尝试使用php array union operator

$all_people = array('Ben' => $all_people['Ben']) + $all_people;

union中的第一个值将始终为first,重复键将自动取消设置。因此,这一次只需要处理所有事情。

如果您的应用程序中经常需要这些功能,您也可以将其添加到函数中:

function moveToTop($array, $key) {
    return array($key => $array[$key]) + $array;
}

$all_people = moveToTop($all_people,'Ben');

答案 1 :(得分:0)

以下是将任何元素移动到第一个元素的方法。

$all_people = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
$ben["Ben"] = $all_people["Ben"];
$all_people = $ben + $all_people;

Live Demo