2016-01-09 3 views
2

Я работаю на небольшой проект на основе CodeIgniter, я не разработчик 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"  
    } 
} 

Как я могу сортировать массив $ UTENTI по ​​индексу «Номе»? Я потратил несколько часов, чтобы понять, как работает этот массив, без каких-либо результатов вы можете мне помочь?

ответ

0

ПГПС функция 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

Смежные вопросы