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

Comment utiliser les tableaux PHP

不言
不言original
2018-07-09 10:08:002384parcourir

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
// )

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
// )

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;

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;

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;;
}
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;

Notez que lors du traitement des données utilisateur (telles que comme données demandées)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
// )
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]
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]
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
// )
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]
À 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!
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]
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
// )
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);
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
// )

译注:有关合并数组操作还有一个「+」号运算符,它和 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镜像的方法

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!

Déclaration:
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