2016-01-09 86 views
2

我基於笨工作的一個小項目的陣列,我不是一個PHP開發人員,這是我的問題:排序數組PHP

 foreach ($checkeds['id_iscritti'] as $checked){ 

     $iscritto = $this->pellegrinaggio_iscritti_m->get_iscritto($checked); 

     $utente = $this->utenti_m->get_utente($iscritto[0]->id_utente); 

     echo ("utente: <pre> ");var_dump($utente);echo (" </pre> \n\n"); 

    } 

這是代碼,它基本上產生關聯陣列

,這就是我從獲得的var_dump:

array(1) { [0]=> 
    object(stdClass)#38 (27) { 
    ["id"]=> 
    string(3) "254" 
    ["nome"]=> 
    string(13) "Padre EDUARDO" 
    ["cognome"]=> 
    string(9) "ANATRELLA"  
    } 
} 

utente: 
array(1) { 
    [0]=> 
    object(stdClass)#37 (27) { 
    ["id"]=> 
    string(3) "338" 
    ["nome"]=> 
    string(4) "ELSA" 
    ["cognome"]=> 
    string(5) "PAONE"  
    } 
} 

我怎麼可以排序的指數「諾姆」數組$個用戶? 我花了幾個小時,瞭解這種陣列如何工作,沒有任何結果,你能幫助我嗎?

回答

0

PHP的usort()函數允許您使用自定義功能進行排序陣列。

假設你的對象的數組存儲在$utente,下面將每個對象與之比較的用匿名比較函數彼此對象。

在下面的代碼的$utente陣列將通過nome值進行排序升序。

usort($utente, function($a, $b){ 
    if ($a->nome > $b->nome) { 
     return 1; 
    }elseif($a->nome < $b->nome){ 
     return -1; 
    }else{ 
    return 0; 
    } 
}); 

更多細節可以在http://php.net/manual/en/function.usort.php

1

這是你想要的功能: http://php.net/manual/en/function.array-multisort.php

您的代碼應該是這個樣子:

$sorted = array_multisort($utente, 'nome', SORT_ASC); 
+0

發現糾正我,如果我錯了,但我敢肯定,'在array_multisort()'只排序數組的數組,而不是對象的數組? – RCrowt

+1

看來你是對的,我錯過了。其他答案(你的)是正確的。 – KWeiss