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



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

$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.

谢谢!

使用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);

你可以在这里试试。

干杯。


*:可从PHP 5获得

相关内容

  • 没有找到相关文章

最新更新