对数组进行排序,使索引不移动?

时间:2016-04-14 12:07:44

标签: php arrays sorting asort

如何对数组进行排序,因为值会移动并且索引会保持不变。我在下面写了这段代码,虽然它给出的答案并不理想。

$array = array(6,2,22,15,33,40,30,70,65);
asort($array,);
print_r($array);

现在对值进行排序,但索引随值移动。我得到了答案;

Array ( [1] => 2 [0] => 6 [3] => 15 [2] => 22 [6] => 30 [4] => 33 [5] => 40 [8] => 65 [7] => 70 )

虽然我希望它显示如下;

Array ( [0] => 2 [1] => 6 [2] => 15, etc.

谢谢!

1 个答案:

答案 0 :(得分:0)

使用 array_combine() *

它将两个数组合并为一个,使用第一个作为一组键,第二个作为新数组的值集合。

所以基本上你只需要获取原始密钥和排序值,然后将它们提供给array_combine()

$a = [
  'a' => 'orange',
  'b' => 'apple',
  'o' => 'banana',
];

$tmp = $a;
sort($tmp);
$result = array_combine(array_keys($a), $tmp);

var_dump($a, $result);

您可以尝试here

干杯。

*:可从PHP 5获得