Ich habe eine Reihe von Objekten, die Fußballspieler sind. Das Array kann alles von null bis zu Tausenden von Spielern enthalten. Ich will es zu den besten 10. Mein erster Versuch war zu reduzieren, wie folgt:Reduzieren Sie ein Array von Objekten zu den "besten 10"
while (count($ArrayOfPlayers) > 10) {
$ArrayIndex = 0;
$WorstPlayerIndex = -1;
$WorstPlayerSkill = 9999999999;
foreach ($ArrayOfPlayers as $Player) {
$Skill = $Player->RatingsArray['Skill'];
if ($Skill < $WorstPlayerSkill) {
$WorstPlayerIndex = $ArrayIndex;
$WorstPlayerSkill = $Skill;
}
$ArrayIndex += 1;
}
// Found the worst player in the list, so remove him.
unset($ArrayOfPlayers[$WorstPlayerIndex]);
}
durch ähnliche Beiträge gelesen, ich bin jetzt bewusst, dass das Problem ist, dass das Array nicht tatsächlich geändert wird, so Die while-Schleife wird für immer fortgesetzt (der Computer sperrt tatsächlich).
So ist mein Versuch, es zu korrigieren, wie folgt, basierend auf den Ratschlägen anderer Beiträge.
while (count($ArrayOfPlayers) > 10) {
$WorstIndexPlayer = 0;
$WorstPlayerSkill = 9999999999;
foreach ($ArrayOfPlayers as $key => &$Player) {
$Skill = $Player->RatingsArray['Skill'];
if ($Skill < $WorstPlayerSkill) {
$WorstIndexPlayer = $key;
$WorstPlayerSkill = $Skill;
}
}
// Found the worst player in the list, so remove him.
unset($ArrayOfPlayers[$WorstIndexPlayer]);
}
Wie Sie wahrscheinlich sagen, ich kann nicht verstehen, was an dieser Stelle und verstehe nicht, ich tue, was die $ Schlüsselteil für ist (es von anderen Beispielen nur kopiert wird). Es hängt immer noch nur den PC.
Wie kann ich das korrigieren oder gibt es einen besseren Weg, dies zu erreichen?
Als Antwort auf die Anfrage für die Datenstruktur, hier ist eine Dump von nur 2 Spielern, um zu zeigen, wie sie angeordnet sind.
Array
(
[0] => Player Object
(
[ID] => 1
[TeamID] => 1
[Name] => Joseph Dorrington
[RatingsArray] => Array
(
[Skill] => 51993
)
)
[1] => Player Object
(
[ID] => 2
[TeamID] => 1
[Name] => Oliver Tillyard
[RatingsArray] => Array
(
[Skill] => 64574
)
)
können Sie die Datenstruktur bitte – Kisaragi
Aktualisiert Frage posten, Datenstruktur zeigt. Hoffentlich haben Sie das gewollt? – Farflame