PHP-PHP 多维数组排序的问题
$arr = array(
array('Task'=>array(
'end'=>12,'state'=>1,
)),
array('Task'=>array(
'end'=>10,'state'=>2,
)),
array('Task'=>array(
'end'=>11,'state'=>3,
)),
);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
匿名函数5.3就开始支持了。
usort($arr, function($a, $b) {
return $b['Task']['end'] - $a['Task']['end'];
});
这样会不会感觉更好一点.
usort来调用自定义的函数.
<?php
$arr = array(
array('Task'=>array(
'end'=>12,'state'=>1,
)),
array('Task'=>array(
'end'=>10,'state'=>2,
)),
array('Task'=>array(
'end'=>11,'state'=>3,
)),
);
function cmp($a, $b)
{
$av = $a['Task']['end'];
$bv = $b['Task']['end'];
if ($av == $bv)
{
return 0;
}
return $av < $bv ? -1 : 1;
}
usort($arr, 'cmp');
print_r($arr);
感谢@jiangmiao 的指正, 确实是如果用闭包的话, 写起来更舒服. 我也更喜欢闭包的写法.
更新下闭包的写法:
usort($arr, function ($a, $b){
$av = $a['Task']['end'];
$bv = $b['Task']['end'];
if ($av == $bv)
{
return 0;
}
return $av < $bv ? -1 : 1;
});
<?php
$arr = array(
array('Task'=>array(
'end'=>12,'state'=>1,
)),
array('Task'=>array(
'end'=>10,'state'=>2,
)),
array('Task'=>array(
'end'=>11,'state'=>3,
)),
);
foreach($arr as $i => $v) {
$sort_end[$i] = $v['Task']['end'];
}
array_multisort($sort_end, SORT_ASC, $arr);
print_r($arr);