我有一个如下所示的数组:
<span class="ext-link"> [[Media:MyFile.pdf|My Link Text]] </span>
我的目标是按每个嵌套数组对这个数组进行排序,这意味着我想要按每个[1]的值对数组进行排序,然后按每个[2]的值进行排序等。我当前的代码是下面,我可以理解为什么它没有提供我想要的结果。每次循环通过时,它都会覆盖$ csvarray,我只得到同一个数的倍数。
我想将每个已排序的数组放入其自己的数组中,以便稍后在HTML表中显示它们。我尝试使用$ i设置变量,但没有成功。
Array
(
[0] => Array
(
[0] => A
[1] => -1
[2] => -1
)
[1] => Array
(
[0] => B
[1] => 0
[2] => 1
)
[2] => Array
(
[0] => C
[1] => -1
[2] => 0
)
)
用户AbraCadaver通过以下方式为我提供了正确的答案:
for ($i = 1; $i < count($csvarray); $i++) {
uasort($csvarray, function($a, $b) {
return $b[$i] <=> $a[$i];
});
echo "<pre>";
print_r($csvarray);
echo "</pre>";
}
答案 0 :(得分:0)
我只是提取这些列,对它们进行排序,然后对原始列进行排序:
array_multisort(array_column($csvarray, 1), SORT_DESC,
array_column($csvarray, 2), SORT_DESC,
$csvarray, SORT_DESC);
如果您想要SORT_ASC
(升序),那么您可以完全省略这些参数,因为这是默认值。
对于动态数量的列,您可以尝试:
foreach($csvarray as $row) {
array_shift($row);
$values[] = implode('|', $row);
}
array_multisort($values, $csvarray);