Maison > développement back-end > tutoriel php > Comment utiliser les tableaux PHP

Comment utiliser les tableaux PHP

不言
Libérer: 2023-04-02 21:42:02
original
2461 Les gens l'ont consulté

Cet article présente principalement l'utilisation des tableaux PHP, qui ont une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Dans ce tutoriel, j'utiliserai quelques exemples pratiques et. Répertorie les fonctions de tableau couramment utilisées en PHP selon les meilleures pratiques. Chaque ingénieur PHP doit savoir comment les utiliser et comment les combiner pour écrire un code plus simple et plus lisible.

De plus, nous proposons une présentation d'un exemple de code pertinent, que vous pouvez télécharger à partir du lien correspondant et partager avec votre équipe pour constituer une équipe plus solide.

Démarrage

Commençons par quelques fonctions de tableau de base qui gèrent les clés et les valeurs du tableau. array_combine(), en tant que membre de la fonction array, est utilisé pour créer un tout nouveau tableau en utilisant la valeur d'un tableau comme nom de clé et la valeur d'un autre tableau comme valeur :

<?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
// )
Copier après la connexion

Il faut savoir que la fonction array_values() renverra les valeurs du tableau sous la forme d'un tableau indexé, array_keys() renverra le nom de clé du tableau donné, et la fonction array_flip(), sa fonction est de échanger les valeurs des clés et les noms des clés dans le tableau :

<?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
// )
Copier après la connexion

Code simplifié

fonction list(), pour être précis, ce n'est pas une fonction, mais une structure de langage qui peut attribuer les valeurs du tableau à un ensemble de variables. Par exemple, l'utilisation de base de la fonction list() est donnée ci-dessous :

<?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;
Copier après la connexion

Cette structure de langage est combinée avec preg_split() ou éclater() Ce type de fonction est plus efficace Si vous n'avez pas besoin de définir certaines valeurs, vous pouvez directement ignorer l'affectation de certains paramètres :

$string = &#39;hello|wild|world&#39;;

list($hello, , $world) = explode(&#39;|&#39;, $string);
echo $hello, &#39; &#39;, $world;
Copier après la connexion

De plus, Ce type de fonction est plus efficace. 🎜>list() Il peut également être utilisé pour la traversée foreach Cette utilisation permet de mieux tirer parti de cette structure de langage :

$arrays = [[1, 2], [3, 4], [5, 6]];

foreach ($arrays as list($a, $b)) {
    $c = $a + $b;

    echo $c, &#39;, &#39;;
}
Copier après la connexion
Note du traducteur : La liste(). la structure du langage n'est applicable qu'aux tableaux d'index numériques, et l'indexation par défaut commence à 0 et ne peut pas être utilisée avec des tableaux associatifs, voir la documentation.

Et en utilisant la fonction extract(), vous pouvez exporter un tableau associatif dans une variable (table de symboles). Pour chaque élément du tableau, son nom de clé sera utilisé comme nom de variable, et la valeur de la variable sera la valeur de l'élément correspondant :

<?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;
Copier après la connexion

Notez que lors du traitement des données utilisateur (telles que comme données demandées)< La fonction 🎜>extract() est une fonction sûre, il est donc préférable pour le moment d'utiliser de meilleurs types d'indicateurs tels que EXTR_IF_EXISTS et EXTR_PREFIX_ALL.

extract() L'opération inverse de la fonction est la fonction compact(), qui permet de créer des tableaux associatifs par noms de variables :

<?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
// )
Copier après la connexion
Fonction Filtre

PHP fournit une fonction géniale pour filtrer les tableaux, c'est array_filter(). Utilisez le tableau à traiter comme premier paramètre de la fonction, et le deuxième paramètre est une fonction anonyme. Si vous souhaitez que les éléments du tableau passent la validation, renvoyez

true dans la fonction anonyme, sinon renvoyez false : la fonction

<?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]
Copier après la connexion
ne prend pas seulement en charge le filtrage par valeur. Vous pouvez également utiliser

ARRAY_FILTER_USE_KEY ou ARRAY_FILTER_USE_BOTH comme troisième paramètre pour spécifier s'il faut utiliser la valeur clé du tableau ou à la fois la valeur clé et le nom de la clé comme paramètres de la fonction de rappel.

Vous pouvez également définir une fonction de rappel dans la fonction

array_filter() pour supprimer les valeurs nulles :

<?php
$numbers = [-1, 0, 1];

$not_empty = array_filter($numbers);

print_r($not_empty);// [0 => -1, 2 => 1]
Copier après la connexion
Vous pouvez utiliser la fonction array_unique() pour supprimer les valeurs nulles valeurs d'un tableau Obtenez l'élément de valeur unique. Notez que cette fonction conservera le nom de clé de l'élément unique dans le tableau d'origine :

<?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
// )
Copier après la connexion
La fonction array_column() peut obtenir la valeur de la colonne spécifiée à partir d'un tableau multidimensionnel (multidimensionnel) , comme obtenir la réponse à partir d'une base de données SQL ou d'un fichier CSV pour importer des données. Passez simplement le tableau et le nom de la colonne spécifié :

<?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]
Copier après la connexion
À partir de PHP 7,

array_column est plus puissant car il commence à prendre en charge les tableaux contenant des objets, il est donc plus facile à gérer le modèle de tableau Cela devient encore plus simple :

<?php
$cinemas = Cinema::find()->all();
$cinema_ids = array_column($cinemas, &#39;id&#39;); // php7 forever!
Copier après la connexion
Traitement des itérations du tableau

En utilisant array_map(), vous pouvez exécuter une méthode de rappel sur chaque élément du tableau. Vous pouvez obtenir un nouveau tableau basé sur le tableau donné en passant un nom de fonction ou une fonction anonyme :

<?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]
Copier après la connexion
Il y a aussi une rumeur à propos de cette fonction selon laquelle vous ne pouvez pas transmettre le nom et la valeur de la clé du tableau. à la fonction de rappel en même temps, mais nous allons la casser maintenant :

<?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
// )
Copier après la connexion
Mais c'est vraiment moche. Il est préférable d'utiliser la fonction array_walk() à la place. Cette fonction se comporte de manière similaire à

array_map(), mais fonctionne complètement différemment. Tout d'abord, le tableau est transmis par référence, donc array_walk() ne créera pas de nouveau tableau, mais modifiera directement le tableau d'origine. Ainsi, en tant que tableau source, vous pouvez transmettre la valeur du tableau dans la fonction de rappel en utilisant la méthode de passage de référence, et transmettre simplement le nom de clé du tableau directement :

<?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);
Copier après la connexion
Opération de connexion au tableau

in La meilleure façon de fusionner des tableaux en PHP est d'utiliser la fonction array_merge(). Toutes les options du tableau seront fusionnées en un seul tableau et les valeurs avec la même clé seront écrasées par la dernière valeur :

<?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
// )
Copier après la connexion
译注:有关合并数组操作还有一个「+」号运算符,它和 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]
Copier après la connexion

数组的数学运算

使用 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
Copier après la connexion

为了实现统计数组中值的出现次数,可以使用 array_count_values() 函数。它将返回一个新数组,新数组键名为待统计数组的值,新数组的值为待统计数组值的出现次数:

<?php

$things = [&#39;apple&#39;, &#39;apple&#39;, &#39;banana&#39;, &#39;tree&#39;, &#39;tree&#39;, &#39;tree&#39;];
$values = array_count_values($things);

print_r($values);

// Array
// (
//     [apple] => 2
//     [banana] => 1
//     [tree] => 3
// )
Copier après la connexion

生成数组

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

<?php
$bind = array_fill(0, 5, &#39;?&#39;);
print_r($bind);
Copier après la connexion

根据范围创建数组,如小时或字母,可以使用 range() 函数:

<?php
$letters = range(&#39;a&#39;, &#39;z&#39;);
print_r($letters); // [&#39;a&#39;, &#39;b&#39;, ..., &#39;z&#39;]

$hours = range(0, 23);
print_r($hours); // [0, 1, 2, ..., 23]
Copier après la connexion

为了实现获取数组中的部分元素 - 比如,获取前三个元素 - 使用 array_slice() 函数:

<?php
$numbers = range(1, 10);
$top = array_slice($numbers, 0, 3);

print_r($top);// [1, 2, 3]
Copier après la connexion

排序数组

首先谨记 PHP 中有关排序的函数都是 引用传值 的,排序成功返回 true 排序失败返回 false。排序的基础函数是 sort() 函数,它执行排序后的结果不会保留原索引顺序。排序函数可以归类为以下几类:

  • a 保持索引关系进行排序

  • k 依据键名排序

  • r 对数组进行逆向排序

  • u 使用用户自定义排序规则排序

你可以从下表看到这些排序函数:


akru
aasort
arsortuasort
k
ksortkrsort
rarsortkrsortrsort
uuasort

usort

数组函数的组合使用

数组处理的艺术是组合使用这些数组函数。这里我们通过 array_filter()array_map() 函数仅需一行代码就可以完成空字符截取和去控制处理:

<?php
$values = [&#39;say&#39;, &#39;  bye&#39;, &#39;&#39;, &#39; to&#39;, &#39; spaces  &#39;, &#39;    &#39;];
$words = array_filter(array_map(&#39;trim&#39;, $values));

print_r($words);// [&#39;say&#39;, &#39;bye&#39;, &#39;to&#39;, &#39;spaces&#39;]
Copier après la connexion

依据模型数组创建 id 和 title 数据字典,我们可以结合使用 array_combine()array_column() 函数:

<?php
$models = [$model, $model, $model];

$id_to_title = array_combine(
    array_column($models, &#39;id&#39;),
    array_column($models, &#39;title&#39;)
);

print_r($id_to_title);
Copier après la connexion
译注:提供一个 可运行的版本。

为了实现获取出现频率最高的数组元素,我们可以使用 array_count_values()arsort()array_slice() 这几个函数:

<?php

$letters = [&#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;b&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;d&#39;, &#39;d&#39;, &#39;d&#39;, &#39;d&#39;];

$values = array_count_values($letters);
arsort($values);
$top = array_slice($values, 0, 3);

print_r($top);
Copier après la connexion

还可以轻易的通过 array_sum()array_map() 函数仅需数行就能完成计算订单的价格:

<?php
$order = [
    [&#39;product_id&#39; => 1, &#39;price&#39; => 99, &#39;count&#39; => 1],
    [&#39;product_id&#39; => 2, &#39;price&#39; => 50, &#39;count&#39; => 2],
    [&#39;product_id&#39; => 2, &#39;price&#39; => 17, &#39;count&#39; => 3],
];

$sum = array_sum(array_map(function ($product_row) {
    return $product_row[&#39;price&#39;] * $product_row[&#39;count&#39;];
}, $order));

print_r($sum);// 250
Copier après la connexion

总结

正如你所看到的那样,掌握主要的数组函数可以是我们的代码更精简且易于阅读。当然,PHP 提供了比列出来的要多得多的数组函数,并且还提供了额外参数及标识参数,但是我觉得本教程中已经涵盖了 PHP 开发者应该掌握的最基本的一些。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

PHP缓存区ob的介绍

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal