Ändern Taste in der assoziatives array in PHP
Sagen, ich habe ein array wie dieses:
array(2) {
[0]=> array(2) {
["n"]=> string(4) "john"
["l"]=> string(3) "red"
}
[1]=> array(2) {
["n"]=> string(5) "nicel"
["l"]=> string(4) "blue"
}
}
Wie würde ich die Tasten ändern der inneren arrays? Sagen, das will ich ändern "n" - für "name" und "l" für "Nachname". Unter Berücksichtigung, dass es passieren kann als ein array nicht über eine bestimmte Taste.
- Schau mal hier: stackoverflow.com/questions/240660/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit array_walk
Etwas wie dies vielleicht:
HINWEIS: diese Lösung wird ändern Sie die Reihenfolge der Tasten. Zum beibehalten der Reihenfolge, müsstest du das array neu erstellen.
Könnten Sie haben:
E. g.:
In einer Weise, die Sie haben können, andere Ersetzungen einfach hinzufügen von ein paar Schlüssel/Wert der
$mapKeyArray
variable.Diese Lösung funktioniert auch, wenn einige Schlüssel nicht verfügbar ist in den original-array
Nur notieren Sie sich den alten Wert verwenden unset, um es zu entfernen aus dem array, dann fügen Sie es mit dem neuen key und der alte Wert-paar.
Umbenennen die Taste UND halten Sie die Reihenfolge konsistent (die später wichtig war für den Fall verwenden, dass der folgende code geschrieben wurde).
Und einige unit-tests (PHPUnit verwendet wird, aber hoffentlich verständlich, da der Zweck des tests).
Den AssertError Behauptung ist verfügbar für PHPUnit von https://github.com/digitickets/phpunit-errorhandler
$keys[array_search($oldKey, $keys)] = $newKey;
Zu:$keys[array_search($oldKey, array_map('strval', $keys))] = $newKey;
Hier ist das Problem, das ich gestoßen bin: php.net/manual/en/function.array-search.php#122377 Auch ich war in der Lage, verwenden Sie die Funktion w/ array_walk (rekursiv). Danke!Könnten Sie die array_flip Funktion:
Hier ist eine Lösung änderung der Schlüssel eines array - und auch halten Sie die original-position innerhalb des Arrays. Es ist beabsichtigt, für assoziative arrays. In meinem Fall waren die Werte der Objekte, aber ich habe dieses vereinfachte Beispiel.