gpt4 book ai didi

PHP 按索引对二维数组进行排序(非关联)

转载 作者:可可西里 更新时间:2023-11-01 00:11:23 25 4
gpt4 key购买 nike

此代码无法正常运行,但它表明了我正在尝试做的事情:

function sort_2d_by_index($a,$i) {
function cmp($x, $y) {
// Nested function, can't find $i
// (global $i defeats the purpose of passing an arg)
if ($x[$i] == $y[$i]) { return 0; }
return ($x[$i] < $y[$i]) ? -1 : 1;
}

usort($a,"cmp");
return $a;
}

必须有更好的方法来做到这一点。我一直在研究 ksort()multisort() 和各种各样的方法,直到我厌倦了尝试将其全部解决。

情况是这样的:我有一个二维数组...

array(
array(3,5,7),
array(2,6,8),
array(1,4,9)
);

...我想按列索引排序。例如,[1] 列会给出以下结果:

array(
array(1,4,9),
array(3,5,7),
array(2,6,8)
);

有人有链接吗(我确定之前有人问过这个问题),或者有人可以说“你肯定需要 foosort”。非常感谢。

最佳答案

documentation array_multisort 提到它可以用于这种事情。

您无法避免创建仅包含一列的数组:

$sort_column = array();
foreach ($a as $row)
$sort_column []= $row[1]; // 1 = your example

array_multisort($sort_column, $a);

这会同步对两个数组进行排序,以便之后您的整个数组按照与 $sort_column 数组相同的顺序排序。

从 PHP 5.3 开始,您可以使用 closure (将 $i 传递给函数)通过​​这样定义 cmp 函数:

$cmp = function($x, $y) use ($i) { ... };

关于PHP 按索引对二维数组进行排序(非关联),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com