Мне помогли сортировать мой многомерный массив, используя следующий код
<?php
$guildname = str_replace(" ", "_", "Mutiny");
$url = 'http://eu.battle.net/api/wow/guild/frostmane/'.$guildname.'?fields=members';
$content = file_get_contents($url);
$json = json_decode($content, true);
array_multisort($json["members"], SORT_ASC);
foreach($json["members"] as $item)
{
echo
"<tr>
<td>" . $item['character']['name'] . "</td>
<td>" . $item['character']['class'] . "</td>
<td>" . $item['rank'] . "</td>
</tr>"
;
}
?>
Теперь странно, что мой массив сортируется правильно, за исключением первого элемента. Проверьте это изображение или приведенный ниже список в качестве примера:
Добавление SORT_STRING не работает и дает ошибку.
<?php
$json = file_get_contents ('https://eu.api.battle.net/wow/guild/Frostmane/Mutiny?fields=members&locale=en_GB&apikey=*');
$data = json_decode ($json, true);
$entries = $data['members'];
usort ($entries, 'sortByName');
var_dump ($entries);
function sortByName ($entry1, $entry2)
{
$name1 = $entry1['character']['name'];
$name2 = $entry2['character']['name'];
return ord ($name1) - ord ($name2);
}
?>
spec
массива, она сортировалась первой. Независимо от этого, массив имел больше измерений, которые не учитывала функция сортировки, а именно character
а не name
.
Вы можете использовать array_multisort()
следующим образом:
$array = array
(
[Baritone Horn] => Array
(
[0] => Array
(
[Name] => Baritone Maintenance
[Order] => 12
[CategoryID] => 13849839018
)
[1] => Array
(
[Name] => Baritone Mouthpieces
[Order] => 13
[CategoryID] => 13850963018
)
[2] => Array
(
[Name] => Accessories
[Order] => 11
[CategoryID] => 13850964018
)
)
[Alpen Horn] => Array
(
[0] => Array
(
[Name] => Baritone Maintenance
[Order] => 12
[CategoryID] => 13849839018
)
[1] => Array
(
[Name] => Baritone Mouthpieces
[Order] => 13
[CategoryID] => 13850963018
)
[2] => Array
(
[Name] => Accessories
[Order] => 11
[CategoryID] => 13850964018
)
)
)
array_multisort($array);