Php 带重新排列索引的反向排序数组

Php 带重新排列索引的反向排序数组,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,所以现在我遇到了一个问题,我有一个像这样的数组设置 array(8) { [0]=> array(2) { [0]=> float(2.1166666666667) [1]=> string(7) "9434493" } [1]=> array(2) { [0]=> float(2.07) [1]=> string(7) "8591971" }

所以现在我遇到了一个问题,我有一个像这样的数组设置

array(8) { 
    [0]=> array(2) { 
        [0]=> float(2.1166666666667) 
        [1]=> string(7) "9434493" 
    } 
    [1]=> array(2) { 
        [0]=> float(2.07) 
        [1]=> string(7) "8591971" 
    } 
    [2]=> array(2) { 
        [0]=> float(2.0566666666667) 
        [1]=> string(8) "17015102" 
    } 
    [3]=> array(2) { 
        [0]=> float(2.0366666666667) 
        [1]=> string(7) "9637191" 
    } 
    [4]=> array(2) { 
        [0]=> float(2.015) 
        [1]=> string(8) "11405473" 
    } 
    [5]=> array(2) { 
        [0]=> float(1.9833333333333) 
        [1]=> string(8) "28233403" 
    } 
    [6]=> array(2) { 
        [0]=> float(2.0366666666667) 
        [1]=> string(8) "14248330" 
    } 
    [7]=> array(2) { 
        [0]=> float(2.0933333333333) 
        [1]=> string(8) "14987165" 
    } 
}
在我使用函数
arsort()
之后,它看起来如下所示:

array(8) { 
    [0]=> array(2) { 
        [0]=> float(2.1166666666667) 
        [1]=> string(7) "9434493" 
    } 
    [7]=> array(2) { 
        [0]=> float(2.0933333333333) 
        [1]=> string(8) "14987165" 
    } 
    [1]=> array(2) { 
        [0]=> float(2.07) 
        [1]=> string(7) "8591971" 
    } 
    [2]=> array(2) { 
        [0]=> float(2.0566666666667) 
        [1]=> string(8) "17015102" 
    } 
    [6]=> array(2) { 
        [0]=> float(2.0366666666667) 
        [1]=> string(8) "14248330" 
    } 
    [3]=> array(2) { 
        [0]=> float(2.0366666666667) 
        [1]=> string(7) "9637191" 
    } 
    [4]=> array(2) { 
        [0]=> float(2.015) 
        [1]=> string(8) "11405473" 
    } 
    [5]=> array(2) { 
        [0]=> float(1.9833333333333) 
        [1]=> string(8) "28233403" 
    } 
} 
所以我的数组是按[0]索引的值排序的。但是

当我试着这样循环时

$x = 0;
while ($x < count($sorted_array)) {
    $sorted_array[$x][0];
    $x++;
}
$x=0;
而($x
它一直在打印原始数组顺序。然后我意识到,当我使用函数
arsort()
时,它保持了索引的原始顺序,因此它以原始数组顺序打印

有没有一个函数可以解决这个问题,这样我就可以用索引来循环它?任何帮助都将不胜感激。

非常适合这里

按相反顺序对数组排序


此函数不维护索引关联

快速查看PHP文档表明,
rsort()

当您使用
arsort()
时,会保留关键点

因为您正在使用
$x
进行迭代,所以实际上忽略了排序调用

对循环使用
rsort()

或者在调用
arsort()
后使用
foreach()
循环

或者最好是调用
array\u column()
,而不是循环

以下是一些演示:()


foreach()
loopUse
rsort
函数,而不是
arsort
,如果您不想用值保留索引位置。我将使用以下方法之一。我会告诉你事情的进展。
$array=$copy=[
    [2.1166666666667,9434493],
    [2.07,8591971],
    [2.0566666666667,17015102],
    [2.0366666666667,9637191],
    [2.015,11405473],
    [1.9833333333333,28233403],
    [2.0366666666667,14248330],
    [2.0933333333333,14987165]
];
arsort($array);
var_export(array_column($array,0));  // <-- you lose the keys you preserved
echo "\n---\n";

foreach($array as $index=>$row){     // <-- you keep the keys you preserved
    echo "$index : {$row[0]}\n";
}

echo "\n---\n";
rsort($copy);                        // you don't preserve the keys
for($x=0, $count=sizeof($copy); $x<$count; ++$x){  // you should cache the count instead of calling count() on every iteration
    echo "$x : {$copy[$x][0]}\n";
}
array (
  0 => 2.1166666666667,
  1 => 2.0933333333333,
  2 => 2.07,
  3 => 2.0566666666667,
  4 => 2.0366666666667,
  5 => 2.0366666666667,
  6 => 2.015,
  7 => 1.9833333333333,
)
---
0 : 2.1166666666667
7 : 2.0933333333333
1 : 2.07
2 : 2.0566666666667
6 : 2.0366666666667
3 : 2.0366666666667
4 : 2.015
5 : 1.9833333333333

---
0 : 2.1166666666667
1 : 2.0933333333333
2 : 2.07
3 : 2.0566666666667
4 : 2.0366666666667
5 : 2.0366666666667
6 : 2.015
7 : 1.9833333333333