php 索引排序,PHP按索引排序2d数组(非关联)

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

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,肯定”.非常感谢.

解决方法:

在array_multisort的documentation中,提到它可以用于这种事情.

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

$sort_column = array();

foreach ($a as $row)

$sort_column []= $row[1]; // 1 = your example

array_multisort($sort_column, $a);

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

从PHP 5.3开始,你可以通过定义你的cmp函数来使用closure(将$i传递给函数):

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

标签:php,sorting

来源: https://codeday.me/bug/20190723/1517513.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值