将数组元素移至php中的顶部[重复]

问题描述 投票:0回答:5
$arr = array( 'a1'=>'1', 'a2'=>'2' );
我需要将A2移至顶部,并保留

a2

作为关键,我如何继续我,我似乎无法在不弄乱某些东西的情况下思考:)

php arrays sorting associative-array
5个回答
62
投票
here是一种解决方案,可以使用数字键和字符串键正确地工作:

function move_to_top(&$array, $key) { $temp = array($key => $array[$key]); unset($array[$key]); $array = $temp + $array; }
它起作用是因为PHP中的数组是订购的地图。
顺便说一句,将项目移至底部使用:

function move_to_bottom(&$array, $key) { $value = $array[$key]; unset($array[$key]); $array[$key] = $value; }

您可以这样做到这一点:

14
投票

trone this:
$key = 'a3';
$arr = [
    'a1' => '1',
    'a2' => '2',
    'a3' => '3',
    'a4' => '4',
    'a5' => '5',
    'a6' => '6'
];
if (isset($arr[ $key ]))
    $arr = [ $key => $arr[ $key ] ] + $arr;

5
投票
恢复:

array( 'a3' => '3', 'a1' => '1', 'a2' => '2', 'a4' => '4', 'a5' => '5', 'a6' => '6' )
    

这里是一个简单的一个衬里,可以用
array_splice()

1
投票
运算符完成此操作:

$arr = array('a1'=>'1', 'a2'=>'2', 'a3' => '3');
$arr = array_splice($arr,array_search('a2',array_keys($arr)),1) + $arr;
Edit:

回顾期,我不确定为什么我不仅会这样做:

$arr = array('a2' => $arr['a2']) + $arr; 清洁剂,更容易且可能更快。

您还可以查看

array_multisort
这使您可以使用一个数组对另一个数组进行排序。  例如,这可以允许您将值的硬编码顺序外部化到配置文件中。
<?php $ar1 = array(10, 100, 100, 0); $ar2 = array(1, 3, 2, 4); array_multisort($ar1, $ar2); var_dump($ar1); var_dump($ar2); ?>


-1
投票

输出: array(4) { [0]=> int(0) [1]=> int(10) [2]=> int(100) [3]=> int(100) } array(4) { [0]=> int(4) [1]=> int(1) [2]=> int(2) [3]=> int(3) }

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