【问题标题】:Sorting an array so that the index does not move?对数组进行排序以使索引不移动?
【发布时间】:2016-08-05 23:30:06
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • a关联排序()
  • 使用 sort() 而不是 asort()
  • 这是一个悖论......你希望索引坚持,但不坚持......正如@MarkBaker所说:使用sort()

标签: php arrays sorting asort


【解决方案1】:

使用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 获得

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2022-09-23
    • 2022-10-14
    • 1970-01-01
    • 2016-01-01
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多