Если у вас нет другого способа восстановить отсортированные данные, вы можете сделать это самостоятельно - используя usort()
- что сортируется по вашей собственной функции. Сравните с другими значениями posts
и поместите их соответственно в массив (верните 1, если он должен быть перемещен вверх, -1, если он должен быть перемещен вниз).
Я также добавил array_slice()
in, так как вы, кажется, хотите только первые 4 элемента (таким образом, вы получаете только те, и вам не нужен счетчик).
// Test-data, I guessed my way to your format to match the output from what you had in the question
$data = [
[['name' => 'Testuser2', 'posts' => 0, 'profileUrl' => 'swag']],
[['name' => 'Josh', 'posts' => 15, 'profileUrl' => 'swag']],
[['name' => 'Test', 'posts' => 3, 'profileUrl' => 'swag']],
[['name' => 'Swaghetti', 'posts' => 34, 'profileUrl' => 'swag']],
];
// $data = json_decode($response, true);
usort($data, function($a, $b) {
$a = array_column($a[0], 'posts');
$b = array_column($b[0], 'posts');
return ($a < $b) ? -1 : 1;
});
$slieced = array_slice($data, 0, 4);
foreach($slieced as $member) {
if (is_array($member)) {
foreach($member as $name) {
echo '<p class="top-member-p">
<a href="'.$name['profileUrl'].'">'.ucfirst($name['name']).'</a>
has '.$name['posts'] . ' posts
</p>'."\n";
}
}
}