In PHP sind Arrays eine geordnete und schlüssige Datenstruktur. Der Schlüsselwert-Swap bezieht sich auf die Tauschschlüssel und Werte in einem Array, um ein neues Array zu erstellen. Abhängig vom Datentyp des Array-Elements können verschiedene Algorithmen ausgewählt werden, um den Schlüsselvertausch zu implementieren.
Datentyp | Algorithmus |
---|---|
Assoziatives Array (Schlüssel ist eine Zeichenfolge oder eine Ganzzahl) | Array_flip () |
Normales Array (Schlüssel ist eine Ganzzahl) | asort () + array_keys () |
Objektarray | Array_map () + benutzerdefinierte Rückruffunktion |
Wenn die Schlüssel eines Arrays oder Ganzzahlen sind, kann die Funktion array_flip () verwendet werden, um den Schlüsselwertaustausch zu implementieren.
$arr = ['name' => 'John', 'age' => 30];
$flippedArr = array_flip($arr);
print_r($flippedArr);
Ausgangsergebnis:
Array
(
[John] => name
[30] => age
)
Verwenden Sie für ein normales Array, in dem der Schlüssel eine Ganzzahl ist, zuerst ASORT (), um das Array zu sortieren, und dann Array_keys (), um den neuen Schlüssel zu erhalten.
$arr = [1, 2, 3, 4, 5];
asort($arr);
$flippedArr = array_keys($arr);
print_r($flippedArr);
Ausgangsergebnis:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
Für Arrays, die Objekte enthalten, können Sie Array_Map () mit einer benutzerdefinierten Rückruffunktion verwenden, um den Schlüsselwerttausch zu implementieren.
class Person {
public $name;
public $age;
}
$person1 = new Person();
$person1->name = 'John';
$person1->age = 30;
$person2 = new Person();
$person2->name = 'Mary';
$person2->age = 25;
$arr = [$person1, $person2];
$flippedArr = array_map(function ($obj) {
return [$obj->name, $obj];
}, $arr);
print_r($flippedArr);
Ausgangsergebnis:
Array
(
[John] => Person Object
(
[name] => John
[age] => 30
)
[Mary] => Person Object
(
[name] => Mary
[age] => 25
)
)
Die oben genannten sind mehrere häufige Methoden und praktische Fälle von Schlüsselwertaustausch in PHP-Arrays. Die Auswahl des geeigneten Algorithmus gemäß verschiedenen Datentypen kann die Effizienz und Lesbarkeit des Programms verbessern.