2013-04-24 4 views
1

Я хочу сортировать многомерный массив, в котором каждый массив является объектом. Пример наarray_multisort с массивом многомерных объектов

http://php.net/manual/en/function.array-multisort.php

указывает на необходимость создания массива столбцов, на которых сортировать

foreach ($data as $key => $row) { 
    $volume[$key] = $row['volume']; 
    $edition[$key] = $row['edition']; 
} 

array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); 

, но я получаю ошибку followiwng если я форматировать мой запрос в следующем формате:

Catchable fatal error: Object of class stdClass could not be converted to string

Код имеет следующую пару ключей/значений для фамилии с ключом last_name:

foreach ($mw_users as $key => $value) { 
$last_name[$key] = $row['last_name']; 
} 

array_multisort($last_name, SORT_ASC, $mw_users); 
+0

Вы не можете сортировать объекты, вам необходимо отсортировать по количеству или строке. – Revent

+0

Я хочу сортировать по одному элементу в объекте в этом случае last_name – user2316819

+0

Найден ответ - определите массив для каждого столбца, который вы хотите отсортировать, и добавьте значения столбца с использованием синтаксиса ссылки на объект: foreach ($ mw_users as $ mw_user) { $ lastnames [] = $ mw_user-> last_name; $ firstnames [] = $ mw_user-> first_name; } array_multisort ($ lastnames, SORT_ASC, $ firstnames, SORT_ASC, $ mw_users); – user2316819

ответ

1

Определите массив для каждого столбца, который вы хотите сортировать и добавить значения столбцов, используя эталонную синтаксис объекта:

// Obtain a list of columns 
foreach ($mw_users as $mw_user) { 
    $lastnames[] = $mw_user->last_name; 
    $firstnames[] = $mw_user->first_name; 
} 

// Sort the data with volume descending, edition ascending 
// Add $mw_users as the last parameter, to sort by the common key 
array_multisort($lastnames, SORT_ASC, $firstnames, SORT_ASC, $mw_users); 

Это похоже на сортировку результатов базы данных: http://php.net/...array-multisort.php....

0

При сортировке массивов объектов в PHP это помогает переопределить магический метод __tostring(). Таким образом, различные методы сортировки воспринимают объект как нечто сопоставимое. Например, объект персонала может выводить имя или идентификатор персонала этого сотрудника.

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