2014-02-20 3 views
1

Я пробовал и пытался, и я просто не разбираюсь в сортировке массива. Ive следовал за бесчисленными учебниками, чтобы попытаться разобраться, но я не думаю, что он работает (по крайней мере, не так, как мне хотелось бы).Я не могу правильно отсортировать этот массив. Пробовал много вещей

Im пытается сделать таблицу высоких результатов, перечисляя игроков ($ игроков) от наивысшего до самого низкого по счету ($ totalMoney).

foreach ($myposts as $post) : setup_postdata($post); 

    $player = get_the_author_meta('display_name'); 
    $cash = get_the_author_meta('cashOnHand'); 
    $bank = get_the_author_meta('bankAccount'); 

    $totalMoney = $cash + $bank; 

    $highScores = array($player => $totalMoney); 

    asort($highScores); 

    foreach($highScores as $key => $value) 

     print_r($highScores); 


endforeach; 

Результаты всегда массив, который, кажется, отсортированный по полю «игрока», а не в поле «баллы». Но независимо от того, что я делаю, я не могу заставить его сортировать по полю «score» массива.

print_r(): 
Array ([player3] => 2500) Array ([player2] => 6485) Array ([sd] => 3515) 

Вы можете видеть, что массив не отсортирован по оценке (я думаю, что его сортировку по именам игроков).

Как его сортировать по значению ключа игрока?

PS: Ive пытался все различные виды: asort, arsort, ksort, krsort, но его всегда одни и те же результаты (см выше print_r()

+0

это PHP Если это так, вы должны сказать, так и пометить его может повлиять на ответ – Stewart

+0

Одна вещь, которую я заметил, что '$ highScores', кажется, имеет только один элемент в нем на основе вашего кода. '$ highScores = array ($ player => $ totalMoney);' Кажется, вы каждый раз сортируете массив с одним элементом. –

ответ

3

Я думаю, что вы сделали ошибку в вашем коде сброса. . высокие оценки массива на каждой итерации вашего цикла

Смотрите следующее:..

$highScores = array(); // initialize the array 

foreach ($myposts as $post) : 
    setup_postdata($post); 

    $player = get_the_author_meta('display_name'); 
    $cash = get_the_author_meta('cashOnHand'); 
    $bank = get_the_author_meta('bankAccount'); 

    $totalMoney = $cash + $bank; 

    $highScores[$player] = $totalMoney; // add an entry to the array 

endforeach; 

asort($highScores); // sort the array 

print_r($highScores); // see result 
+0

Да, Флип прав; Переместите свой 'asort' вне вашего' foreach'. – Quixrick

+0

Спасибо! Спасибо! – user12920

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