如何在PHP中将具有已知键的数组元素移动到数组的末尾?

2022-08-30 09:28:59

大脑因一个相当微不足道的问题而冻结。如果我从这样的数组开始:

$my_array = array(
                  'monkey'  => array(...),
                  'giraffe' => array(...),
                  'lion'    => array(...)
);

...新元素可能会添加不同的键,但始终是数组值。现在我可以确定第一个元素总是有关键的“猴子”,但我不能确定任何其他键。

当我完成填充数组时,我想将已知元素“monkey”移动到数组的末尾,而不会干扰其他元素的顺序。最有效的方法是什么?

我能想到的每种方式似乎都有点笨拙,我觉得我错过了一些明显的东西。


答案 1

我能想到的唯一方法是删除它,然后添加它:

$v = $my_array['monkey'];
unset($my_array['monkey']);
$my_array['monkey'] = $v;

答案 2

array_shift可能比取消设置索引更有效,但它有效:

$my_array = array('monkey' => 1, 'giraffe' => 2, 'lion' => 3);
$my_array['monkey'] = array_shift($my_array);
print_r($my_array);

另一种选择是使用回调和uksort

uksort($my_array, create_function('$x,$y','return ($y === "monkey") ? -1 : 1;'));

如果您使用的是 PHP5.3+,或者只是定期将函数定义为全局函数,则需要使用正确的 lambda