Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie PHP-Arrays

So verwenden Sie PHP-Arrays

不言
不言Original
2018-07-09 10:08:002463Durchsuche

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.

Erste Schritte

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 = [&#39;sky&#39;, &#39;grass&#39;, &#39;orange&#39;];
$values = [&#39;blue&#39;, &#39;green&#39;, &#39;orange&#39;];

$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));// [&#39;sky&#39;, &#39;grass&#39;, &#39;orange&#39;]

print_r(array_values($array));// [&#39;blue&#39;, &#39;green&#39;, &#39;orange&#39;]

print_r(array_flip($array));
// Array
// (
//     [blue] => sky
//     [green] => grass
//     [orange] => orange
// )

Vereinfachen Sie den Code

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 = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;];

// 不使用 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 = &#39;hello|wild|world&#39;;

list($hello, , $world) = explode(&#39;|&#39;, $string);
echo $hello, &#39; &#39;, $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, &#39;, &#39;;
}
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 = [
    &#39;clothes&#39; => &#39;t-shirt&#39;,
    &#39;size&#39; => &#39;medium&#39;,
    &#39;color&#39; => &#39;blue&#39;,
];

extract($array);

echo $clothes, &#39; &#39;, $size, &#39; &#39;, $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 = &#39;t-shirt&#39;;
$size = &#39;medium&#39;;
$color = &#39;blue&#39;;

$array = compact(&#39;clothes&#39;, &#39;size&#39;, &#39;color&#39;);
print_r($array);

// Array
// (
//     [clothes] => t-shirt
//     [size] => medium
//     [color] => blue
// )

Filterfunktion

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 = [
    [&#39;id&#39; => 1, &#39;title&#39; => &#39;tree&#39;],
    [&#39;id&#39; => 2, &#39;title&#39; => &#39;sun&#39;],
    [&#39;id&#39; => 3, &#39;title&#39; => &#39;cloud&#39;],
];

$ids = array_column($array, &#39;id&#39;);

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, &#39;id&#39;); // php7 forever!

Array-Traversal-Verarbeitung

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 = [&#39;Berlin&#39;, &#39;KYIV&#39;, &#39;Amsterdam&#39;, &#39;Riga&#39;];
$aliases = array_map(&#39;strtolower&#39;, $cities);

print_r($aliases);// [&#39;berlin&#39;, &#39;kyiv, &#39;amsterdam&#39;, &#39;riga&#39;]

$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 = [&#39;id&#39; => 7, &#39;name&#39; => &#39;James&#39;];
$res = array_map(function ($key, $value) {
    return $key . &#39; is &#39; . $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 = [
    &#39;banana&#39; => &#39;yellow&#39;,
    &#39;apple&#39; => &#39;green&#39;,
    &#39;orange&#39; => &#39;orange&#39;,
];

array_walk($fruits, function (&$value, $key) {
    $value = $key . &#39; is &#39; . $value;
});

print_r($fruits);

Array-Verbindungsvorgang

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 = [&#39;a&#39; => &#39;a&#39;, &#39;b&#39; => &#39;b&#39;, &#39;c&#39; => &#39;c&#39;];
$array2 = [&#39;a&#39; => &#39;A&#39;, &#39;b&#39; => &#39;B&#39;, &#39;D&#39; => &#39;D&#39;];
 
$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() 函数。它将返回一个新数组,新数组键名为待统计数组的值,新数组的值为待统计数组值的出现次数:

41cd024259fee57a3f70060824ab3c97 2
//     [banana] => 1
//     [tree] => 3
// )

生成数组

需要以给定值生成固定长度的数组,可以使用 array_fill() 函数:

8820f44454f0fd2ffffa31f308b79687 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中文网!

相关推荐:

PHP缓存区ob的介绍

为多个PHP-FPM容器量身打造单一Nginx镜像的方法

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn