2016-02-27 41 views
1

我有一個數據庫值的多維數組。標題存儲在語言文件中,所以我不能簡單地通過title來命令db查詢。我必須循環查看結果,並根據類別的id從語言文件中獲取標題。因此,我必須使用適當的標題創建一個自定義數組。如何使用其中一個鍵的值對PHP多維數組進行排序?

這是我的模型:

<?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函數,可以讓我通過標題密鑰的值$信息數組排序?我不知道如何使用asort($ info)做到這一點,因爲數組更復雜。

+1

未排序數組和排序版本的示例會更有用。 – axiac

+0

使用['uasort()'](http://php.net/manual/en/function.uasort.php)?以下是不同的PHP排序函數:http://php.net/manual/en/array.sorting.php –

+1

閱讀['array_multisort()'](http://php.net/manual/en/function。陣列multisort.php)。這是你的問題的答案。該文檔甚至包含您可以使用的代碼(在示例#3中)。顯然這個例子是在引入函數['array_column()'](http://php.net/manual/en/function.array-column.php)之前編寫的(在PHP 5.5中)。 ['uasort()'](http://php.net/manual/en/function.uasort.php)當然是另一種可能的解決方案。 – axiac

回答

1

我不知道這是否你想要什麼,但是你可以DIGE更在此功能 array_multisort() 或者使用下面的例子來讓你自己的代碼。

$title= array(); 
foreach ($info as $key => $row) 
{ 
    $title[$key] = $row['title']; 
} 
array_multisort($price, SORT_DESC, $info); 
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; 
} 
相關問題