如何通过其中一个键的值对PHP多维数组进行排序?

时间:2016-02-27 22:07:06

标签: php arrays

我有一个多维数据库值数组。标题存储在语言文件中,所以我不能简单地按标题排序db查询。我必须遍历结果并根据类别的id从语言文件中获取标题。因此,我必须创建一个具有相应标题的自定义数组。

这是我的模特:

<?php
function retrieve(){

    foreach($query_cats->result_array() as $cat){

        $info[] = array(
            'id' => $cat['id'],
            'title' => $this->lang->line('cat_'.$cat['id']),
            'slug' => $cat['slug'],
            'icon' => $cat['icon']
        );

    }

    return $info;

}

是否有一个php函数允许我按标题键的值对$ info数组进行排序?我不知道如何使用asort($ info)来实现这一点,因为数组更复杂。

2 个答案:

答案 0 :(得分:1)

我不确定这是否是你想要的,但你可以在这个功能中进行更多的探讨 array_multisort() 或使用以下示例来创建自己的代码。

$title= array();
foreach ($info as $key => $row)
{
    $title[$key] = $row['title'];
}
array_multisort($price, SORT_DESC, $info);

答案 1 :(得分:1)

您可以将usortstrcasecmp结合使用。我还建议在函数循环中进行简化:

function retrieve(){
    foreach ($query_cats->result_array() as $cat) {
        $cat['title'] = $this->lang->line('cat_'.$cat['id']);
        $info[] = $cat;
    }
    usort($info, function($a, $b) {
        return strcasecmp($a['title'], $b['title']);
    });
    return $info;
}