Diese Seite wurde mit einer breiten Interpretation der Anforderungen gespickt, da es kein minimales, überprüfbares Beispiel im Fragenteil gibt. Einige Antworten versuchen lediglich, den "Titel" zu lösen, ohne sich die Mühe zu machen, die Anforderungen der Frage zu verstehen.
Der Schlüssel ist eine ID-Nummer und der Wert ist eine Anzahl. Dies ist für die meisten Fälle in Ordnung, aber ich möchte eine Funktion, die den lesbaren Namen des Arrays abruft und diesen als Schlüssel verwendet, ohne den Wert zu ändern.
PHP-Schlüssel können nicht geändert aber sie können ersetzt werden - deshalb raten so viele Antworten zur Verwendung von array_search()
(ein relativ schlechtes Ergebnis) und unset()
.
Letztendlich möchten Sie ein neues Array mit Namen als Schlüssel erstellen, die sich auf die ursprüngliche Anzahl beziehen. Dies ist am effizientesten über ein Lookup-Array möglich, da die Suche nach Schlüsseln immer besser ist als die Suche nach Werten.
Code: ( Demo )
$idCounts = [
3 => 15,
7 => 12,
8 => 10,
9 => 4
];
$idNames = [
1 => 'Steve',
2 => 'Georgia',
3 => 'Elon',
4 => 'Fiona',
5 => 'Tim',
6 => 'Petra',
7 => 'Quentin',
8 => 'Raymond',
9 => 'Barb'
];
$result = [];
foreach ($idCounts as $id => $count) {
if (isset($idNames[$id])) {
$result[$idNames[$id]] = $count;
}
}
var_export($result);
Salida:
array (
'Elon' => 15,
'Quentin' => 12,
'Raymond' => 10,
'Barb' => 4,
)
Diese Technik behält die ursprüngliche Array-Reihenfolge bei (für den Fall, dass die Sortierung von Bedeutung ist), führt keine unnötigen Iterationen durch und ist sehr schnell aufgrund der isset()
.
0 Stimmen
Siehe ähnlich stackoverflow.com/q/308703