Im täglichen Betrieb von PHP sind Arrays die häufigste Struktur, und wir arbeiten fast täglich mit arraybezogenen Inhalten. Die Frage ist also: Wie durchläuft und verarbeitet man Arrays im Allgemeinen?
1、für jeden
Es kommt mir bekannt vor, ist es nicht dein Lieblingsstück?
$arr = ['a', 'b', 'c'];
foreach ($arr als $key => $value) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
2、array_map
Verwenden Sie anonyme Funktionen, um jedes Element im Array zu verwalten. Ein neues Array wird zurückgegeben, wenn das Durchlauf abgeschlossen ist
$arr = ['a', 'b', 'c'];
$arr = array_map(Funktion ($item) {
Zurück $item. '_i';
}, $arr);
print_r($arr); ['a_i', 'b_i', 'c_i'];
Man kann mit mehreren Arrays gleichzeitig arbeiten
$arr_1 = ['a', 'b', 'c'];
$arr_2 = ['du', 'gut', 'ist', 'original', 'sin'];
$arr_n = [...];
$arr = array_map(Funktion ($item_1, $item_2) {
Return $item_1 . '_' . $item_2 . '_i';
}, $arr_1, $arr_2);
print_r($arr); ['a_ du _i', 'b_ ist good_i', 'Bist du c__i', '_original _i', '_sin_i']
Ja, die Anzahl der Durchquerungen basiert auf dem längsten Array.
Nach dreimalem Durchlaufen ist $arr_1 tatsächlich abgeschlossen, sodass die Werte von $item_1 danach null sind
3、array_walk
Das Durchqueren des Arrays als Referenzpass hat keinen Rückgabewert und kann nur ein Array verarbeiten.
$arr = ['a', 'b', 'c'];
array_walk($arr, function (&$item) {
$item = $item . '_i';
});
print_r($arr); ['a_i', 'b_i', 'c_i'];
Beachten Sie &$item, ja, es gibt ein zusätzliches &, was bedeutet, dass Ihr Parameter Daten durch Referenz empfängt. Du musst nur einen Weg finden, diesen Parameter zu ändern.
Wenn Sie es mit zweidimensionalen Arrays zu tun haben, ist die Verarbeitungsmethode ebenfalls untrennbar.
$arr = [
['name' => 'a'],
['name' => 'b'],
['name' => 'c']
];
array_walk($arr, function (&$item) {
$item['name'] = $item['name'] . '_i';
});
print_r($arr); [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']];
4、für
Das sollte eine sehr generische Syntax sein
$arr = ['a', 'b', 'c'];
für ($i = 0; $i < Zähl($arr); ++$i) {
$arr[$i] = $arr[$i] . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
Nicht zu empfehlen. Es ist nicht so effizient wie Foreach. Und die Schreibmethode ist etwas umständlicher als Übergriff.
5.
Haha, diese Funktion wurde in PHP7.2 @deprecated aufgegeben und wirkt besonders altmodisch. Auch die Ausführungseffizienz dieser Schreibmethode ist nicht gut, und Anfänger sollten sofort aufgeben.
$arr = ['a', 'b', 'c'];
während (list($key, $value) = each($arr)) {
$arr[$key] = $value . '_i';
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
6、Reset
Genauer gesagt handelt es sich nicht nur um eine Funktion zum Zurücksetzen, sondern auch um eine Kombination mehrerer eingebauter Funktionen, die im Grunde nicht zum Schreiben von Code verwendet wird
$arr = ['a', 'b', 'c'];
reset()-Zeiger auf den Kopf, tatsächlich zeigt standardmäßig auf den Anfang, du kannst diesen Satz ignorieren
reset($arr);
current(), um den Elementwert des aktuellen Zeigers zu erhalten.
während ($value = Strom($arr)) {
key(), um das Element-Subskript des aktuellen Zeigers zu erhalten
$arr[key($arr)] = $value . '_i';
next()-Zeiger auf den nächsten
nächstes($arr);
}
print_r($arr); ['a_i', 'b_i', 'c_i'];
|