PHP:将关联数组元素移至数组的开始

问题描述 投票:0回答:6
将关联数组的任何元素移至数组的开头的最佳方法是什么?

,例如,说我有以下数组:

$myArray = array( 'two' => 'Blah Blah Blah 2', 'three' => 'Blah Blah Blah 3', 'one' => 'Blah Blah Blah 1', 'four' => 'Blah Blah Blah 4', 'five' => 'Blah Blah Blah 5', );

我想做的就是将“一个”元素移至开始,最终以以下数组:

$myArray = array( 'one' => 'Blah Blah Blah 1', 'two' => 'Blah Blah Blah 2', 'three' => 'Blah Blah Blah 3', 'four' => 'Blah Blah Blah 4', 'five' => 'Blah Blah Blah 5', );

	
php sorting associative-array
6个回答
210
投票
+

)。

one
array键是唯一的,因此它不可能在两个位置存在。

进一步查看doc
阵列操作员:

+运算符返回附加到左侧数组的右手数组;对于两个数组中存在的键,将使用左侧数组中的元素,右手数组中的匹配元素将被忽略。

如果您有数值数组键并且想要绑定索引数组键,那么最好将其放入

$myArray = array('one' => $myArray['one']) + $myArray; // or ['one' => $myArray['one']] + $myArray;
中:

array_merge

7
投票

迟到了,但是如果有人需要它,我创建了这个小片段。

$myArray = array_merge(array($key => $value) + $myArray );

将其调整以适应您的需求,或使用它并解开索引移动。也与关联阵列一起工作。

there是另一条简单的单线,可以使用

2
投票

完成此操作。

array_splice()
    

如果您有2个阵列, 第一元素可以移至第二个元素的顶部,您可以使用

2
投票
$myArray = array_splice($myArray,array_search('one',array_keys($myArray)),1) + $myArray;

这里是代码样本:

$result = \array_replace($ArrayToMoveToTop, $myArray);
    

1
投票
在php手册的评论中,有一个功能,该函数可用于将元素添加到数组的开头:

//source array $myArray = [ 'two' => 'Blah Blah Blah 2', 'three' => 'Blah Blah Blah 3', 'one' => 'Blah Blah Blah 1', 'four' => 'Blah Blah Blah 4', 'five' => 'Blah Blah Blah 5', ]; // set necessary order $orderArray = [ 'one' => '', 'two' => '', ]; //apply it $result = \array_replace($orderArray, $myArray); \print_r($result);
未设置元素,然后通过上述函数再次重新插入:

function array_unshift_assoc(&$arr, $key, $val) { $arr = array_reverse($arr, true); $arr[$key] = $val; return array_reverse($arr, true); }
更通用的方法可能是使用

-2
投票
用键对数组进行排序,并提供自己的分类函数。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.