簡體   English   中英

php array_multisort():數組大小不一致

[英]php array_multisort(): Array sizes are inconsistent

我如何使用php array_multisort對數組進行排序? 我找不到此類數組的任何示例。 我嘗試了不同的方法,但是我不斷收到錯誤array_multisort():數組大小不一致。

$array= Array (
    "Arnold" => Array ( "index" => 2, "games_played" => 1, "score" => 5 ),
    "Chris"  => Array ( "index" => 1, "games_played" => 1, "score" => 5 ),
    "Mike"   => Array ( "index" => 0, "games_played" => 2, "score" => 5 )
);

我認為您的做法不正確。 array_multisort不是其他語言中的“排序依據”(即:按某些屬性對數組元素進行排序),而是對第一個數組進行排序,並將該順序回盪到所有后續數組。 並且在相等的情況下,它檢查第二個數組的對應值,等等。

如果要按分數(desc),按游戲方式,按索引(然后按名稱)來排序示例,則應永遠不會發生這種情況,因為索引是唯一的,所以應該這樣做:

$array= Array (
    "Arnold" => Array ( "index" => 2, "games_played" => 1, "score" => 5 ),
    "Chris" => Array ( "index" => 1, "games_played" => 1, "score" => 5 ),
    "Mike" => Array ( "index" => 0, "games_played" => 2, "score" => 5 )
);
$names = [];
$indexes = [];
$games_played = [];
$scores = [];
foreach ($array as $name => $player) {
    $names[] = $name;
    $indexes[] = $player['index'];
    $games_played[] = $player['games_played'];
    $scores[] = $player['score'];
}
array_multisort(
    $scores, SORT_DESC,
    $games_played,
    $indexes,
    $names,
    $array /* This line will sort the initial array as well */
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM