Maison >développement back-end >tutoriel php >Résumé de l'utilisation des tableaux php
Utilisation de tableaux
Un tableau est une variable qui peut stocker un ensemble ou une série de valeurs. Un tableau peut contenir plusieurs éléments. Chaque élément a une valeur, telle qu'un texte, un nombre ou un autre tableau. Un tableau qui contient d'autres tableaux est appelé un tableau multidimensionnel.
Qu'est-ce qu'un tableau ?
Une variable scalaire est une zone nommée utilisée pour stocker des valeurs. De même, un tableau est une zone nommée utilisée pour stocker une série de valeurs de variables. Vous pouvez donc utiliser des tableaux pour organiser des variables scalaires.
Les valeurs stockées dans un tableau sont appelées éléments du tableau. Chaque élément du tableau est associé à un index (également appelé clé), qui peut être utilisé pour accéder à l'élément. Dans la plupart des langages de programmation, les tableaux ont des index numériques, et ces index commencent généralement par 0 ou 1.
Tableau d'index numérique
En PHP, la valeur par défaut de l'index numérique commence à 0, mais bien sûr elle peut être modifiée.
1. Initialisation du tableau d'index numérique
$porducts = array('Tires', 'Oil', 'Spark Plugs');
Tout comme l'instruction echo, array() est en fait une structure de langage , plutôt qu'une fonction.
En fonction des exigences relatives au contenu du tableau, vous n'aurez peut-être pas besoin de les initialiser manuellement comme dans l'exemple ci-dessus. Si les données requises sont conservées dans un autre tableau, vous pouvez simplement copier le tableau dans un autre tableau en utilisant l'opérateur "=".
Si vous devez enregistrer les nombres par ordre croissant dans un tableau, vous pouvez utiliser la fonction range() pour créer automatiquement ce tableau. La ligne de code suivante créera un tableau de nombres de 1 à 10 : $numbers = range(1,10); La fonction range() a un troisième paramètre facultatif qui permet de définir des valeurs entre les étapes. Par exemple, si vous devez créer un tableau de nombres impairs entre 1 et 10, vous pouvez utiliser le code suivant : $odds = range(1,10,2); La fonction
range() peut également opérer sur des caractères. , tel que : $letters = range('a', 'z');
2. Accéder au contenu du tableau
Pour accéder au contenu d'une variable, vous pouvez utiliser directement son nom. Si la variable est un tableau, son contenu est accessible en utilisant une combinaison du nom de la variable et d'un mot-clé ou d'un index. Le mot-clé ou l'index spécifiera la variable à laquelle nous souhaitons accéder. L'index est placé entre crochets après le nom de la variable.
Par défaut, l'élément 0 est le premier élément du tableau.
Veuillez noter que même si les capacités d'analyse de chaînes de PHP sont très puissantes et intelligentes, elles peuvent prêter à confusion. Lorsque vous intégrez des tableaux ou d'autres variables dans des chaînes entre guillemets doubles, s'ils ne sont pas interprétés correctement, vous pouvez les placer en dehors des guillemets doubles, ou consulter le chapitre 4 de « Opérations sur les chaînes avec
Expressions régulières » pour en savoir plus. syntaxe complexe. Tout comme les autres variables en PHP, les tableaux n'ont pas besoin d'être pré-initialisés ou créés. Ils sont créés automatiquement lors de leur première utilisation.
3. Utilisez des boucles pour accéder aux tableaux
Étant donné que les tableaux utilisent des nombres ordonnés comme index, vous pouvez facilement afficher le contenu du tableau à l'aide d'une boucle for.
for ($i=0; $i058dfeabd3553cb1a42a29c4968078a5100, ' Oil'=>10, 'Spark Plugs'=>4 );
Le symbole entre le mot-clé et la valeur est juste un signe supérieur à et un signe égal.
2 Accéder aux éléments du tableau
De même, le contenu d'un tableau est accessible à l'aide de noms de variables et de mots-clés. Par exemple $prices['Tires'].
3 Utilisez des instructions de boucle
Étant donné que l'index du tableau concerné n'est pas un nombre, il est impossible d'utiliser un simple compteur pour opérer sur le tableau dans une instruction de boucle for. Mais vous pouvez utiliser la boucle foreach ou les structures list() et each().
La boucle foreach() a une structure différente lors de l'utilisation de l'instruction de boucle foreach pour opérer sur des tableaux associés. Les mots clés peuvent être utilisés comme suit :
foreach ($prices as $key => $value) echo $key.'=>'.$value.'<br />'; 如下所示的代码将使用each()结构打印$prices数组的内容: while( $element = each($prices)) { echo $element['key']; echo ' - '; echo $element['value']; echo '<br />'; }
La fonction each() renverra l'élément actuel du tableau et utilisera l'élément suivant comme élément actuel. Étant donné que la fonction each() est appelée dans une boucle while, elle renverra chaque élément du tableau dans l'ordre et lorsqu'elle atteindra la fin du tableau, l'opération de boucle se terminera.
Dans ce code, la variable $element est un tableau. Lorsque each() est appelé, il renvoie un tableau avec 4 valeurs numériques et 4 indices pointant vers les positions du tableau. Les positions key et 0 contiennent la clé de l'élément actuel, tandis que les positions value et 1 contiennent la valeur de l'élément actuel. Même si la méthode que vous choisissez ne fait aucune différence, nous avons choisi d'utiliser des emplacements nommés plutôt que des emplacements indexés numériquement.
En outre, il existe un moyen plus avancé et plus courant d'accomplir la même opération. La fonction list() peut être utilisée pour décomposer un tableau en une série de valeurs. Les deux valeurs renvoyées par la fonction each() peuvent être séparées comme suit : list( $product, $price) = each( $price)
Le code ci-dessus utilise each() pour supprimer l'élément actuel du Tableau $prices, et renvoyez-le sous forme de tableau, puis pointez vers l'élément suivant. Il utilise également list() pour modifier les deux éléments 0 et 1 contenus dans le tableau renvoyé par each() en deux nouvelles variables nommées $product et $price.
Nous pouvons parcourir l'intégralité du tableau $prices et afficher son contenu à l'aide d'un court script comme celui-ci :
while(list($prodct, $pirce) = each($prices)) echo "$product - $price<br />";
La sortie de ce code est la même que la sortie du script précédent , Mais c'est plus facile à lire car list() permet de nommer de nouvelles variables.
Une chose à noter est que lors de l'utilisation de la fonction each(), le tableau enregistrera l'élément actuel. Si vous souhaitez utiliser le tableau deux fois dans le même script, vous devez utiliser la fonction reset() pour réinitialiser l'élément actuel au début du tableau. Pour parcourir à nouveau le tableau des prix, vous pouvez utiliser un code comme celui-ci :
reset($prices);
while(list($product, $price) = each($prices))
echo "$ product - $pricedf250b2156c434f3390392d09b1c9563";
opérateur de tableau
+union, == équivalent, === identité, != non équivalent, a8093152e673feb7aba1828c43532094 non équivalent, !== est pas identique.
L'opérateur union tente d'ajouter les éléments de $b à la fin de $a. Si les éléments de $b ont le même index que certains éléments de $a, ils ne seront pas ajoutés. Autrement dit, les éléments de $a ne seront pas écrasés.
Tableaux multidimensionnels
Un tableau n'est pas nécessairement une simple liste de clés et de valeurs - chaque position dans le tableau peut également contenir un autre tableau. En utilisant cette méthode, un tableau bidimensionnel peut être créé. Vous pouvez considérer un tableau bidimensionnel comme une matrice, ou un réseau avec une largeur et une hauteur ou des lignes et des colonnes.
Tri des tableaux
1 Utilisez la fonction sort()
La fonction sort() est sensible à la casse. Toutes les lettres majuscules apparaissent avant les lettres minuscules. Ainsi, « A » est inférieur à « Z » et « Z » est inférieur à « a ».
Le deuxième paramètre de cette fonction est facultatif. Ce paramètre facultatif peut être transmis SORT_REGULAR (par défaut), SORT_NUMERIC ou SORT_STRING. La possibilité de spécifier un type de tri est utile, par exemple, lors de la comparaison de chaînes pouvant contenir les nombres 2 et 12. D'un point de vue mathématique, 2 est inférieur à 12, mais en tant que chaîne, « 12 » est inférieur à « 2 ».
2 Utilisez la fonction asort() et la fonction ksort() pour trier les tableaux associés.
La fonction asort() trie en fonction de la valeur de chaque élément du tableau. La fonction ksort() trie par mot-clé plutôt que par valeur.
3 Tri inversé
La fonction rsort() trie un tableau d'index numérique unidimensionnel par ordre décroissant. La fonction arsort() trie un tableau associatif unidimensionnel par ordre décroissant de la valeur de chaque élément. La fonction krsort() trie le tableau unidimensionnel par ordre décroissant selon les clés des éléments du tableau.
Pour accéder aux données d'un tableau unidimensionnel, vous devez utiliser le nom du tableau et l'index de l'élément. Les tableaux bidimensionnels sont similaires aux tableaux unidimensionnels, sauf qu'un élément a deux indices - ligne. et colonne.
Vous pouvez utiliser une double boucle for pour obtenir le même effet :
for ( $row=0; $row<3; $row++ ) { for ( $column=0; $column<3; $column++ ) { echo '|'.$products[$row][$column]; | echo '|<br />'; }
Si vous utilisez ce code pour un grand tableau, ce sera beaucoup plus simple.
Vous préférerez peut-être créer des noms de colonnes plutôt que des nombres. Vous pouvez utiliser du code comme celui-ci :
$products = array ( array ( 'Code'=>'TIR', 'Descrīption'=>'Tires', 'Price'=>100 ), array ( 'Code'=>'OIL', 'Descrīption'=>'Oil', 'Price'=>10 ), array ( 'Code'=>'SPK', 'Descrīption'=>'Spark Plugs', 'Price'=>4 ) };
Si vous souhaitez récupérer une seule valeur, il sera beaucoup plus simple d'utiliser ce tableau. N'oubliez pas qu'il est plus facile de se souvenir de ce que vous décrivez en l'enregistrant dans une colonne qui porte son nom plutôt qu'en l'enregistrant dans la première colonne. Avec l'indexation descriptive, il n'est pas nécessaire de se rappeler qu'un élément est stocké à la position [x][y]. L’utilisation d’une paire significative de noms de lignes et de colonnes comme index facilite la recherche des données dont vous avez besoin.
Ensuite, nous ne pouvons pas utiliser une simple boucle for pour parcourir chaque colonne dans l'ordre. Vous pouvez utiliser une boucle for pour parcourir le tableau externe indexé numériquement $products. Chaque ligne du tableau $products est un tableau avec un index descriptif. En utilisant les fonctions each() et list() dans une boucle while, vous pouvez parcourir l'intégralité du tableau interne. Par conséquent, une boucle for avec une boucle while intégrée à l’intérieur est requise.
for ( $row = 0; $row < 3; $row++ } { while ( list ( $key, $value ) = each ( $products[$row] ) ) { echo "|$value"; } echo '|<br />'; }
三维数组具有高、宽、深的概念。如果能轻松地将一个二维数组想像成一个有行和列的表格,那么就可以将三维数组想像成一堆像这样的表格。每个元素可以通过层、行和列进行引用。
根据创建多维数组的方法,可以创建四维、五维或六维数组。在PHP中,并没有设置数组维数的限制,但人们很难设想一个多于三维的数组。大多数的实际问题在逻辑上只需要使用三维或者更少维的数组结构就可以了。
多维数组的排序
对 多于一维的数组进行排序,或者不按字母和数字的顺序进行排,要复杂得多。PHP知道如何比较两个数字或字符串,但在多维数组中,每个元素都是一个数组。 PHP不知道如何比较两个数组,所以需要建立一个比较它们的方法。在大多数情况下,单词和数字的顺序是显而易见的——但对于复杂的对象,问题就会多一些。
1 用户定义排序
usort()中的“u”代表“user”,因为这个函数要求传入用户定义的比较函数。asort和ksort对应的版本uasort()和uksort()也要求传入用户定义的比较函数。
类似于asort(),当对非数字索引数组的值进行排序时,uasort()才会被使用。如果值是简单的数字或文本则可以使用asort。如果要比较的值像数组一样复杂,可以定义一个比较函数,然后使用uasort()。
类似于ksort(),当对非数字索引数组的关键字进行排序时才使用uksort()。如果值是简单的数字或文本就使用ksort。如果要比较的对象像数组一样复杂,可以定义一个比较函数,然后使用uksort()。
2 反向用户排序
函数sort()、asort()和ksort()都分别对应一个带字母“r”的反向排序函数。用户定义的排序没有反向变体,但可以对一个多维数组进行反向排序。
对数组进行重新排序
1 使用shuffle()函数
在PHP的早期版本中,shuffle()要求调用srand()函数时首先提供一个随机数生成器。如今,这个步骤已经不再需要了。
如果这个函数对你非常重要,可以在程序中应用该函数之前在服务器上测试它。
由于并不需要真正重新排序整个数组,使用array_rand()函数可以实现相同的功能。
2 使用array_reverse()函数
array_reverse()函数使用一个数组作参数,返回一个内容与参数数组相同但顺序相反的数组。
因为单独使用range()函数将创建一个升序序列,所以必须使用sort()函数或array_reverse()函数将数组中的数字变为降序。或者,也可以使用for循环通过一次一个元素的方式创建这个数组。如:
$numbers = array(); for ($i=10; $i>0; $i--) array_push( $numbers, $i );
一个for循环可以像这样按降序方式运行。可以将计数器
一个for循环可以像这样按降序方式运行。可以将计数器的初始值设为一个大数,在每次循环末尾使用运算符“--”将计数器减1。
在这里,我们创建了一个空数组,然后使用array_push()函数将每个新元素添加到数组的末尾。请注意,和array_push()相反的函数是array_pop(),这个函数用来删除并返回数组末尾的一个元素。
或者,也可以使用array_reverse()函数将由range()函数所创建的数组进行反向排序。
请注意,array_reverse()函数将返回一个原数组修改后的副本。如果不再需要原来的数组,比如在这个例子中,可以用新的副本覆盖原来的版本。
如果数据只是一系列的整数,可以通过将-1作为range()函数的第三个可选调参数,以相反的顺序创建该数组。
从文件载入数组
使用file()函数将整个文件载入一个数组中。文件中的每行则成为数组中的一个元素。使用了count()函数来统计数组中的元素个数。
explode("\t", $orders[$i])
explode()函数可以将传入的字符串分割成一个个小块。每个制表符成为两个元素之间的断点。这个函数的可选参数limit可以用来限制被返回的最大块数。
可以使用许多方法从字符串中提取数字。在这里,我们使用了intval()函数。它可以将一个字符串转化成一个整数。这个转换是相当智能化的,它可以忽略某些部分,例如标签就不能转换成数字。
执行其他的数组操作
1 在数组中浏览:each()、current()、reset()、end()、next()、pos()和prev()
前面已经提到,每个数组都有一个内部指针指向数组中的当前元素。当使用函数each()时,就间接地使用了这个指针,但是也可以直接使用和操作这个指针。
如果创建一个新数组,那么当前指针就将被初始化,并指向数组的第一个元素。
调用next()或each()将使指针前移一个元素。调用each($array_name)会在指针前移一个位置之前返回当前元素。next()函数则有些不同——调用next($array_name)是将指针前移,然后再返回新的当前元素。
调用end($array_name)可以将指针移到数组末尾。
要反向遍历一个数组,可以使用end()和prev()函数。prev()函数和next()函数相反。它是将当前指针往回移一个位置然后再返回新的当前元素。
2 对数组的每一个元素应用任何函数:array_walk()
array_walk()函数需要三个参数。第一个是arr,也就是需要处理的数组。第二个是func,也就是用户自定义并将作用于数组中每个元素的函数。第三个参数userdata是可选的,如果使用它,它可以作为一个参数传递给我们自己的函数。
看一个销微复杂点的例子:
function my_multiply(&$value, $key, $factor) { $value *= $factor; } array_walk(&$array, 'my_multiply', 3);
在这里,我们定义了一个名为my_multiply()的函数,它可以用所提供的乘法因子去乘以数组中的每个元素。
此外,还有一个需要注意的问题是传递毵数$value的方式。在my_multiply()的函数定义中,变量前面的地址符(&)意味着$value是按引用方式传递的。按引用方式传递允许函数修改数组的内容。
3 统计数组元素个数:count()、sizeof()和array_count_values()
count()函数和sizeof()函数具有同样的用途,都可以返回数组元素的个数。可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组个数就是0。
如 果调用array_count_values($array),这个函数将会统计每个特定的值在数组$array中出现过的次数(这就是数组的基数集)。 这个函数将返回一个包含频率表的相关数组。这个数组包含数组$array中的所有值,并以这些值作为相关数组的关键字。每个关键字所对应的数值就是关键字 在数组$array中出现的次数。
4 将数组转换成标量变量:extract()
对于一个非数字索引数组,而该数组又有许多关键字-值对,可以使用函数extract()将它们转换成一系列的标量变量。
函数extract()的作用是通过一个数组创建一系列的标量变量,这些变量的名称必须是数组中关键字的名称,而变量值则是数组中的值。
extract()函数具有两个可选参数:extract_type和prefix。变量extract_type将告诉extract()函数如何处理冲突。有时可能已经存在一个和数组关键字同名的变量,该函数的默认操作是覆盖已有的变量。
两个最常用的选项是EXTR_OVERWRITE(默认值)和EXTR_PREFIX_ALL。当知道会发生特定的冲突并且希望跳过该关键字或要给它加上前缀时,可能会用到其他选项。
extract()可以提取出一个元素,该元素的关键字必须是一个有效的变量名称,这就意味着以数字开始或包含空格的关键字将被跳过。
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!