在php中对多个数组进行排序

发布于 2024-11-07 09:14:44 字数 803 浏览 0 评论 0原文

有人可以帮助我,我需要对这个数组进行排序:

$report_fields['client_id'] = $row['client_id'];
$report_fields['name'] = $row['name'];
$report_fields['is_authorized'] = $row['is_authorized'];
$report_fields['date_created'] = $row['date_created'];
$report_fields['service_id'] = $row['service_id'];
$report_fields['type_id'] = $row['type_id'];
$report_fields['report_name'] = $report_types[$row['type_id']]['type'];


$report_groups[$row['ref_no']][$row['id']] = $report_fields;

我已经尝试像这样进行usort:

usort($report_groups[$row['ref_no']],'cmp');

function cmp($a,$b) { 
   $a_stm = strtotime($a["date_created"]);
   $b_stm = strtotime($b["date_created"]);

   if ($a_stm == $b_stm) {
    return 0;
    }

   return ($a_stm < $b_stm) ? -1 : 1;

}

但返回的结果不正确。

Can someone help me i need to sort this array:

$report_fields['client_id'] = $row['client_id'];
$report_fields['name'] = $row['name'];
$report_fields['is_authorized'] = $row['is_authorized'];
$report_fields['date_created'] = $row['date_created'];
$report_fields['service_id'] = $row['service_id'];
$report_fields['type_id'] = $row['type_id'];
$report_fields['report_name'] = $report_types[$row['type_id']]['type'];


$report_groups[$row['ref_no']][$row['id']] = $report_fields;

I have tried usort like so:

usort($report_groups[$row['ref_no']],'cmp');

function cmp($a,$b) { 
   $a_stm = strtotime($a["date_created"]);
   $b_stm = strtotime($b["date_created"]);

   if ($a_stm == $b_stm) {
    return 0;
    }

   return ($a_stm < $b_stm) ? -1 : 1;

}

But the result returned is incorrect.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

唐婉 2024-11-14 09:14:44

array_multisort 是您想要使用的。

这是一个例子

<?php

$sort = array(
    array(),
    array()
);

foreach ($results as $k=>$result) {
    $sort[0][$k] = $result['sort_field_one'];
    $sort[1][$k] = $result['sort_field_two'];   
}


# sort using $sort[0] DESC and $sort[1] ASC
array_multisort($sort[0], SORT_DESC, $sort[1], SORT_DESC, $results);

array_multisort is what you want to use.

Here's an example

<?php

$sort = array(
    array(),
    array()
);

foreach ($results as $k=>$result) {
    $sort[0][$k] = $result['sort_field_one'];
    $sort[1][$k] = $result['sort_field_two'];   
}


# sort using $sort[0] DESC and $sort[1] ASC
array_multisort($sort[0], SORT_DESC, $sort[1], SORT_DESC, $results);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文