使用以下
代码帮助我对多维数组进行排序
<?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);
}
?>
你可以
像这样使用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);