У меня есть два массива JSON, поступающих с внешнего веб-сайта. Я сортирую и объединять два массива, декодировать их, а затем сортировать их с самого высокого до самого низкого по ID.
В настоящее время, когда нажата опция "Алфавитный список", в конце URL-адреса добавляется ?sort=alphabetical
, а когда страница завершила перезагрузку, массивы JSON снова декодируются и объединяются.
Это не мой желаемый результат: я не хочу, чтобы массивы JSON были декодированы и снова объединены при нажатии этой опции - я просто хочу, чтобы уже декодированные и объединенные массивы JSON сортировались в алфавитном порядке.
Массивы:
$homepage = array();
$homepage[]= '{
"info":{
"collection":[
{
"Name":"Charlie",
"ID":"7"
},
{
"Name":"Emma",
"ID":"9"
}
]
}
}';
$homepage[] = '{
"info":{
"collection":[
{
"Name":"Bob",
"ID":"5"
}
]
}
}';
Сортировка:
$data = array();
foreach ($homepage as $homepage2) {
$tmp=json_decode($homepage2, false);
$data = array_merge($data,$tmp->info->collection);
}
if(!empty($_GET['sort']) && $_GET['sort'] == 'alphabetical') {
usort($data, function ($a, $b) {
return strcmp($a->Name, $b->Name);
});
}else{
usort($data, function ($a, $b) {
return $b->ID - $a->ID;
});
}
echo'
<select onchange="location.href = this.value;">
<option value="example.php?sort=alphabetical">Alphabetical</option>
</select>
';
foreach($data as $key) {
echo'
<a href="test.com">
<p>'.$key->ID.'</p>
<p>'.$key->Name.'</p>
</a>
';
}