Dieser Artikel stellt hauptsächlich die Verwendung von PHP-Arrays vor, die einen gewissen Referenzwert haben. Jetzt können Freunde in Not darauf zurückgreifen.
In diesem Tutorial werde ich einige praktische Beispiele verwenden Listet die häufig verwendeten Array-Funktionen in PHP auf bewährte Weise auf. Jeder PHP-Ingenieur sollte wissen, wie er sie verwendet und kombiniert, um schlankeren und besser lesbaren Code zu schreiben.
Darüber hinaus stellen wir eine Präsentation des relevanten Beispielcodes zur Verfügung, den Sie über den entsprechenden Link herunterladen und mit Ihrem Team teilen können, um ein stärkeres Team aufzubauen.
Beginnen wir mit einigen grundlegenden Array-Funktionen, die Array-Schlüssel und -Werte verarbeiten. array_combine() Als Mitglied der Array-Funktion wird es verwendet, um ein neues Array zu erstellen, indem der Wert eines Arrays als Schlüsselname und der Wert eines anderen Arrays als Wert verwendet wird:
<?php $keys = ['sky', 'grass', 'orange']; $values = ['blue', 'green', 'orange']; $array = array_combine($keys, $values); print_r($array); // Array // ( // [sky] => blue // [grass] => green // [orange] => orange // )
Das sollten Sie wissen Diese Funktion array_values() gibt den Wert im Array in Form eines Indexarrays zurück, array_keys() gibt den Schlüsselnamen des angegebenen Arrays zurück und die Funktion array_flip() besteht darin, den Schlüsselwert und den Schlüsselnamen auszutauschen im Array:
<?php print_r(array_keys($array));// ['sky', 'grass', 'orange'] print_r(array_values($array));// ['blue', 'green', 'orange'] print_r(array_flip($array)); // Array // ( // [blue] => sky // [green] => grass // [orange] => orange // )
list()-Funktion, um genau zu sein, handelt es sich nicht um eine Funktion, sondern um eine Sprachstruktur, die a Werte in einem Array zuweisen kann Satz von Variablen in einem einzigen Vorgang. Die grundlegende Verwendung der Funktion list() ist beispielsweise unten angegeben:
<?php // 定义数组 $array = ['a', 'b', 'c']; // 不使用 list() $a = $array[0]; $b = $array[1]; $c = $array[2]; // 使用 list() 函数 list($a, $b, $c) = $array;
Diese Sprachstruktur wird mit preg_split() oder explode( ) Diese Art von Funktion ist effektiver. Wenn Sie einige Werte nicht definieren müssen, können Sie die Zuweisung einiger Parameter direkt überspringen:
$string = 'hello|wild|world'; list($hello, , $world) = explode('|', $string); echo $hello, ' ', $world;
Darüber hinaus list( ) kann auch für foreach-Traversal verwendet werden, diese Verwendung kann diese Sprachstruktur besser nutzen:
$arrays = [[1, 2], [3, 4], [5, 6]]; foreach ($arrays as list($a, $b)) { $c = $a + $b; echo $c, ', '; }
Anmerkung des Übersetzers: Die Sprachstruktur list() ist nur auf numerische Werte anwendbar indizierte Arrays, und der Standardindex ist von Beginnt mit 0 und kann nicht mit assoziativen Arrays verwendet werden, siehe Dokumentation.
Und mit der Funktion extract() können Sie ein assoziatives Array in eine Variable (Symboltabelle) exportieren. Für jedes Element im Array wird sein Schlüsselname als Variablenname verwendet und der Wert der Variablen ist der Wert des entsprechenden Elements:
<?php $array = [ 'clothes' => 't-shirt', 'size' => 'medium', 'color' => 'blue', ]; extract($array); echo $clothes, ' ', $size, ' ', $color;
Beachten Sie, dass bei der Verarbeitung von Benutzerdaten (z. B. angefordert) data) Die Funktion extract() ist eine sichere Funktion, daher ist es derzeit besser, bessere Flag-Typen wie EXTR_IF_EXISTS und EXTR_PREFIX_ALL zu verwenden.
extract() Die Umkehroperation der Funktion ist die Funktion compact(), die zum Erstellen assoziativer Arrays anhand von Variablennamen verwendet wird:
<?php $clothes = 't-shirt'; $size = 'medium'; $color = 'blue'; $array = compact('clothes', 'size', 'color'); print_r($array); // Array // ( // [clothes] => t-shirt // [size] => medium // [color] => blue // )
PHP bietet eine tolle Funktion zum Filtern von Arrays, array_filter(). Verwenden Sie das zu verarbeitende Array als ersten Parameter der Funktion, und der zweite Parameter ist eine anonyme Funktion. Wenn Sie möchten, dass die Elemente im Array die Validierung bestehen, geben Sie in der anonymen Funktion true zurück, andernfalls geben Sie false zurück: Die Funktion
<?php $numbers = [20, -3, 50, -99, 55]; $positive = array_filter($numbers, function ($number) { return $number > 0; }); print_r($positive);// [0 => 20, 2 => 50, 4 => 55]
unterstützt nicht nur das Filtern nach Wert . Sie können auch ARRAY_FILTER_USE_KEY oder ARRAY_FILTER_USE_BOTH als dritten Parameter verwenden, um anzugeben, ob der Schlüsselwert des Arrays oder sowohl der Schlüsselwert als auch der Schlüsselname als Parameter der Rückruffunktion verwendet werden sollen.
Sie können auch eine Rückruffunktion in der Funktion array_filter() definieren, um Nullwerte zu entfernen:
<?php $numbers = [-1, 0, 1]; $not_empty = array_filter($numbers); print_r($not_empty);// [0 => -1, 2 => 1]
Sie können die Funktion array_unique() verwenden, um eindeutige Werte zu erhalten aus dem Array-Wertelement. Beachten Sie, dass diese Funktion den Schlüsselnamen des eindeutigen Elements im ursprünglichen Array behält: Die Funktion
<?php $array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5]; $uniques = array_unique($array); print_r($uniques); print_r($array); // Array // ( // [0] => 1 // [4] => 2 // [7] => 3 // [8] => 4 // [9] => 5 // )
array_column() kann den Wert der angegebenen Spalte aus einem mehrdimensionalen Array (mehrdimensional) abrufen, z B. Antworten aus einer SQL-Datenbank oder CSV-Dateiimportdaten erhalten. Übergeben Sie einfach das Array und den angegebenen Spaltennamen:
<?php $array = [ ['id' => 1, 'title' => 'tree'], ['id' => 2, 'title' => 'sun'], ['id' => 3, 'title' => 'cloud'], ]; $ids = array_column($array, 'id'); print_r($ids);// [1, 2, 3]
Ab PHP 7 ist array_column leistungsfähiger, da es Arrays mit Objekten unterstützt, sodass es sich beim Umgang mit Array-Modellen ändert . Es ist noch einfacher:
<?php $cinemas = Cinema::find()->all(); $cinema_ids = array_column($cinemas, 'id'); // php7 forever!
Mit array_map() können Sie eine Callback-Methode für jedes Element im Array ausführen. Sie können ein neues Array basierend auf einem bestimmten Array erhalten, indem Sie einen Funktionsnamen oder eine anonyme Funktion übergeben:
<?php $cities = ['Berlin', 'KYIV', 'Amsterdam', 'Riga']; $aliases = array_map('strtolower', $cities); print_r($aliases);// ['berlin', 'kyiv, 'amsterdam', 'riga'] $numbers = [1, -2, 3, -4, 5]; $squares = array_map(function ($number) { return $number ** 2; }, $numbers); print_r($squares);// [1, 4, 9, 16, 25]
Es gibt ein Gerücht über diese Funktion, dass Sie den Array-Schlüsselnamen und den Schlüsselwert nicht an die Callback-Funktion übergeben können gleichzeitig. Aber wir werden es jetzt aufschlüsseln:
<?php $model = ['id' => 7, 'name' => 'James']; $res = array_map(function ($key, $value) { return $key . ' is ' . $value; }, array_keys($model), $model); print_r($res); // Array // ( // [0] => id is 7 // [1] => name is James // )
Aber es ist einfach hässlich, wenn man es so macht. Es ist besser, stattdessen die Funktion array_walk() zu verwenden. Diese Funktion verhält sich ähnlich wie array_map(), funktioniert aber völlig anders. Zuerst wird das Array als Referenz übergeben, sodass array_walk() kein neues Array erstellt, sondern das ursprüngliche Array direkt ändert. Als Quellarray können Sie also den Wert des Arrays mithilfe der Referenzübergabemethode an die Rückruffunktion übergeben und einfach den Schlüsselnamen des Arrays direkt übergeben:
<?php $fruits = [ 'banana' => 'yellow', 'apple' => 'green', 'orange' => 'orange', ]; array_walk($fruits, function (&$value, $key) { $value = $key . ' is ' . $value; }); print_r($fruits);
in PHP Der beste Weg, Arrays zusammenzuführen, ist die Verwendung der Funktion array_merge(). Alle Array-Optionen werden in einem Array zusammengeführt und Werte mit demselben Schlüssel werden durch den letzten Wert überschrieben:
<?php $array1 = ['a' => 'a', 'b' => 'b', 'c' => 'c']; $array2 = ['a' => 'A', 'b' => 'B', 'D' => 'D']; $merge = array_merge($array1, $array2); print_r($merge); // Array // ( // [a] => A // [b] => B // [c] => c // [D] => D // )
译注:有关合并数组操作还有一个「+」号运算符,它和 array_merge() 函数的功能类似都可以完成合并数组运算,但是结果有所不同,可以查看 PHP 合并数组运算符 + 与 array_merge 函数 了解更多细节。
为了实现从数组中删除不在其他数组中的值(译注:计算差值),使用 array_diff()。还可以通过 array_intersect() 函数获取所有数组都存在的值(译注:获取交集)。接下来的示例演示它们的使用方法:
<?php $array1 = [1, 2, 3, 4]; $array2 = [3, 4, 5, 6]; $diff = array_diff($array1, $array2); $intersect = array_intersect($array1, $array2); print_r($diff); // 差集 [0 => 1, 1 => 2] print_r($intersect); //交集 [2 => 3, 3 => 4]
使用 array_sum() 对数组元素进行求和运算,array_product 对数组元素执行乘积运算,或者使用 array_reduce() 处理自定义运算规则:
<?php $numbers = [1, 2, 3, 4, 5]; print_r(array_sum($numbers));// 15 print_r(array_product($numbers));// 120 print_r(array_reduce($numbers, function ($carry, $item) { return $$carry ? $carry / $item : 1; }));// 0.0083 = 1/2/3/4/5
为了实现统计数组中值的出现次数,可以使用 array_count_values() 函数。它将返回一个新数组,新数组键名为待统计数组的值,新数组的值为待统计数组值的出现次数:
<?php $things = ['apple', 'apple', 'banana', 'tree', 'tree', 'tree']; $values = array_count_values($things); print_r($values); // Array // ( // [apple] => 2 // [banana] => 1 // [tree] => 3 // )
需要以给定值生成固定长度的数组,可以使用 array_fill() 函数:
<?php $bind = array_fill(0, 5, '?'); print_r($bind);
根据范围创建数组,如小时或字母,可以使用 range() 函数:
<?php $letters = range('a', 'z'); print_r($letters); // ['a', 'b', ..., 'z'] $hours = range(0, 23); print_r($hours); // [0, 1, 2, ..., 23]
为了实现获取数组中的部分元素 - 比如,获取前三个元素 - 使用 array_slice() 函数:
<?php $numbers = range(1, 10); $top = array_slice($numbers, 0, 3); print_r($top);// [1, 2, 3]
首先谨记 PHP 中有关排序的函数都是 引用传值 的,排序成功返回 true 排序失败返回 false。排序的基础函数是 sort() 函数,它执行排序后的结果不会保留原索引顺序。排序函数可以归类为以下几类:
a 保持索引关系进行排序
k 依据键名排序
r 对数组进行逆向排序
u 使用用户自定义排序规则排序
你可以从下表看到这些排序函数:
a | k | r | u | |
---|---|---|---|---|
a | asort | arsort | uasort | |
k | ksort | krsort | ||
r | arsort | krsort | rsort | |
u | uasort | usort |
数组处理的艺术是组合使用这些数组函数。这里我们通过 array_filter() 和 array_map() 函数仅需一行代码就可以完成空字符截取和去控制处理:
<?php $values = ['say', ' bye', '', ' to', ' spaces ', ' ']; $words = array_filter(array_map('trim', $values)); print_r($words);// ['say', 'bye', 'to', 'spaces']
依据模型数组创建 id 和 title 数据字典,我们可以结合使用 array_combine() 和 array_column() 函数:
<?php $models = [$model, $model, $model]; $id_to_title = array_combine( array_column($models, 'id'), array_column($models, 'title') ); print_r($id_to_title);
译注:提供一个 可运行的版本。
为了实现获取出现频率最高的数组元素,我们可以使用 array_count_values()、arsort() 和 array_slice() 这几个函数:
<?php $letters = ['a', 'a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd', 'd', 'd']; $values = array_count_values($letters); arsort($values); $top = array_slice($values, 0, 3); print_r($top);
还可以轻易的通过 array_sum() 和 array_map() 函数仅需数行就能完成计算订单的价格:
<?php $order = [ ['product_id' => 1, 'price' => 99, 'count' => 1], ['product_id' => 2, 'price' => 50, 'count' => 2], ['product_id' => 2, 'price' => 17, 'count' => 3], ]; $sum = array_sum(array_map(function ($product_row) { return $product_row['price'] * $product_row['count']; }, $order)); print_r($sum);// 250
正如你所看到的那样,掌握主要的数组函数可以是我们的代码更精简且易于阅读。当然,PHP 提供了比列出来的要多得多的数组函数,并且还提供了额外参数及标识参数,但是我觉得本教程中已经涵盖了 PHP 开发者应该掌握的最基本的一些。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Das obige ist der detaillierte Inhalt vonSo verwenden Sie PHP-Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!