Fonctions de tableau PHP (fusionner, diviser, ajouter, rechercher, supprimer, etc.)

黄舟
Libérer: 2023-03-05 12:14:02
original
1684 Les gens l'ont consulté

1. Fusionner les tableaux


La fonction array_merge() fusionne les tableaux ensemble et renvoie un tableau combiné. Le tableau résultant commence par le premier paramètre de tableau d'entrée et est ajouté séquentiellement dans l'ordre dans lequel les paramètres de tableau suivants apparaissent. Sa forme est la suivante :

array array_merge (array array1 array2…,arrayN)
Copier après la connexion

Cette fonction combine les cellules d'un ou plusieurs tableaux, et les valeurs d'un tableau sont ajoutées au tableau précédent. Renvoie le tableau résultant.


Si le tableau d'entrée a le même nom de clé de chaîne, la valeur après le nom de clé écrasera la valeur précédente. Cependant, si le tableau contient des clés numériques, les valeurs suivantes n'écraseront pas les valeurs d'origine, mais leur seront ajoutées.


Si seul un tableau est donné et que le tableau est indexé numériquement, les noms de clés sont réindexés de manière continue.

<?php  
$fruits = array("apple","banana","pear");  
$numbered = array("1","2","3");  
$cards = array_merge($fruits, $numbered);  
print_r($cards);  
  
// output  
// Array ( [0] => apple [1] => banana [2] => pear [3] => 1 [4] => 2 [5] => 3 )  
?>
Copier après la connexion


2. Ajouter un tableau


fonction array_merge_recursive() et array_merge( ) sont identiques, deux tableaux ou plus peuvent être combinés pour former un tableau combiné. La différence entre les deux est que la fonction la gérera différemment lorsqu'une clé d'un tableau d'entrée existe déjà dans le tableau de résultats. array_merge() écrasera les paires clé/valeur existantes et les remplacera par les paires clé/valeur du tableau d'entrée actuel, tandis que array_merge_recursive() fusionnera les deux valeurs ensemble pour former un nouveau tableau avec les clés d'origine. un nom de tableau. Il existe également une forme de fusion de tableaux, qui consiste à ajouter des tableaux de manière récursive. Sa forme est :

array array_merge_recursive(array array1,array array2[…,array arrayN])
Copier après la connexion


L'exemple de programme est le suivant :

<?php  
$fruit1 = array("apple" => "red", "banana" => "yellow");  
$fruit2 = array("pear" => "yellow", "apple" => "green");  
$result = array_merge_recursive($fruit1, $fruit2);  
print_r($result);  
  
// output  
// Array ( [apple] => Array ( [0] => red [1] => green ) [banana] => yellow [pear] => yellow )  
?>
Copier après la connexion

Maintenant, la pomme clé pointe vers un tableau, ce tableau Un tableau indexé de deux valeurs de couleur.


3. Connecter des tableaux


La fonction array_combine() obtiendra un nouveau tableau, qui est soumis par un groupe. Composé de clés et de valeurs correspondantes. Sa forme est :

array array_combine(array keys,array values)
Copier après la connexion


Notez que les deux tableaux d'entrée doivent avoir la même taille et ne peuvent pas être vides. L'exemple est le suivant

<?php  
$name = array("apple", "banana", "orange");  
$color = array("red", "yellow", "orange");  
$fruit = array_combine($name, $color);  
print_r($fruit);  
  
// output  
// Array ( [apple] => red [banana] => yellow [orange] => orange )  
?>
Copier après la connexion

4. La fonction Split array array_slice()


array_slice() renverra une partie. du tableau, commençant à partir du décalage de clé et se terminant à la longueur de décalage. Sa forme :

array array_slice (array array, int offset[,int length])
Copier après la connexion


Lorsque offset est une valeur positive, le fractionnement commencera à partir de la position de décalage depuis le début du tableau si offset est une valeur négative, le fractionnement commencera à partir de la position de décalage depuis le début du tableau ; commencera à partir de la position de décalage depuis le début du tableau. Si le paramètre facultatif de longueur est omis, la division commencera au décalage et ira au dernier élément du tableau. Si la longueur est donnée et est positive, elle se termine à une longueur décalée par rapport au début du tableau. Inversement, si length est donné et est négatif, il se termine à count(input_array)-|length| depuis le début du tableau. Prenons un exemple :

<?php  
  
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");  
$subset = array_slice($fruits, 3);  
print_r($subset);  
  
// output  
// Array ( [0] => Pear [1] => Grape [2] => Lemon [3] => Watermelon )  
?>
Copier après la connexion

Ensuite, nous utilisons la longueur négative inférieure :

<?php  
  
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");  
$subset = array_slice($fruits, 2, -2);  
print_r($subset);  
  
// output  
// Array ( [0] => Orange [1] => Pear [2] => Grape )  
?>
Copier après la connexion

5. Tableau d'épissage array_splice()


La fonction array_splice() supprimera tous les éléments du décalage à la longueur du décalage dans le tableau et renverra les éléments supprimés sous la forme d'un tableau. Sa forme est :

array array_splice ( array array , int offset[,length[,array replacement]])
Copier après la connexion


Lorsque offset est une valeur positive, la jointure commencera à partir de la position de décalage depuis le début du tableau. Lorsque offset est une valeur négative. , la jointure commencera à partir de la position décalée par rapport au début du tableau. Si le paramètre facultatif de longueur est omis, tous les éléments commençant à la position de décalage et se terminant à la fin du tableau seront supprimés. Si la longueur est donnée et est positive, la jointure se termine à une longueur décalée par rapport au début du tableau. À l’inverse, si length est donné et est négatif, l’union se terminera par count(input_array)-length depuis le début du tableau. Un exemple est le suivant :

<?php  
  
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");  
$subset = array_splice($fruits, 4);  
  
print_r($fruits);  
print_r($subset);  
  
// output  
// Array ( [0] => Apple [1] => Banana [2] => Orange [3] => Pear )   
// Array ( [0] => Grape [1] => Lemon [2] => Watermelon )  
?>
Copier après la connexion

Vous pouvez utiliser le paramètre facultatif remplacement pour spécifier le tableau pour remplacer la pièce cible. Un exemple est le suivant :

<?php  
  
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");  
$subset = array_splice($fruits, 2, -1, array("Green Apple", "Red Apple"));  
  
print_r($fruits);  
print_r($subset);  
  
// output  
// Array ( [0] => Apple [1] => Banana [2] => Green Apple [3] => Red Apple [4] => Watermelon )   
// Array ( [0] => Orange [1] => Pear [2] => Grape [3] => Lemon )  
?>
Copier après la connexion

Vous pouvez clairement voir comment utiliser cette fonction à partir du programme.

6. Intersection de tableaux array_intersect()

La fonction array_intersect() renvoie un tableau qui conserve les clés. se compose de valeurs qui apparaissent dans chaque tableau et apparaissent dans tous les autres tableaux d'entrée. Sa forme est la suivante :

array array_intersect(array array1,array array2[,arrayN…])
Copier après la connexion


L'exemple suivant renverra tous les fruits qui apparaissent dans le tableau $fruit1 et apparaissent également dans $fruit2 et $fruit3 :

<?php  
$fruit1 = array("Apple","Banana","Orange");  
$fruit2 = array("Pear","Apple","Grape");  
$fruit3 = array("Watermelon","Orange","Apple");  
$intersection = array_intersect($fruit1, $fruit2, $fruit3);  
print_r($intersection);  
  
// output  
// Array ( [0] => Apple )  
?>
Copier après la connexion


La fonction array_intersect() considérera que deux éléments sont identiques uniquement s'ils sont égaux et ont le même type de données.

7. Intersection de tableaux associatifs array_intersect_assoc()


La fonction array_intersect_assoc() est fondamentalement la même que array_intersect(), sauf que les clés du tableau sont également prises en compte dans la comparaison. Par conséquent, seules les paires clé/valeur qui apparaissent dans le premier tableau et qui apparaissent également dans tous les autres tableaux d'entrée sont renvoyées dans le tableau de résultats.

a la forme suivante :

array array_intersect_assoc(array array1,array array2[,arrayN…])
Copier après la connexion


L'exemple suivant renvoie les valeurs qui apparaissent dans le tableau $fruit1 et apparaissent également dans $fruit2 et $fruit3 Toutes les paires clé/valeur :

<?php  
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");  
$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");  
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");  
$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);  
print_r($intersection);  
  
// output  
// Array ( [red] => Apple )  
?>
Copier après la connexion

8. L'ensemble de différences de tableaux array_diff()

La fonction array_diff( ) renvoie l'occurrence de la valeur A dans un tableau mais pas dans les autres tableaux d'entrée. Cette fonction est l'opposé de array_intersect().

array array_diff(array array1,array array2[,arrayN…])
Copier après la connexion


Les exemples sont les suivants :

<?php  
$fruit1 = array("Apple","Banana","Orange");  
$fruit2 = array("Pear","Apple","Grape");  
$fruit3 = array("Watermelon","Orange","Apple");  
$intersection = array_diff($fruit1, $fruit2, $fruit3);  
print_r($intersection);  
  
// output  
// Array ( [1] => Banana )  
?>
Copier après la connexion


9. Associatif array Différence array_diff_assoc()

函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键。因此,只在第一个数组中出现而不再其他输入数组中出现的键/值对才会返回到结果数组中。其形式如下:

array array_diff_assoc(array array1,array array2[,arrayN…])
Copier après la connexion


下面的例子只返回了[yellow] => Banana,因为这个特殊的键/值对出现在$fruit1中,而在$fruit2和$fruit3中都不存在。

<?php  
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");  
$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");  
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");  
$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3);  
print_r($intersection);  
  
// output  
// Array ( [yellow] => Banana )  
?>
Copier après la connexion


使用数组的过程中经常要遍历数组。通常需要遍历数组并获得各个键或值(或者同时获得键和值),所以毫不奇怪,PHP为此提供了一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移向下一个适当的位置。

10. 获取当前数组键 key()


key()函数返回input_array中当前指针所在位置的键。其形式如下:

mixed key(array array)
Copier après la connexion


下面的例子通过迭代处理数组并移动指针来输出$fruits数组的键:

$fruits = array("apple"=>"red", "banana"=>"yellow");  
while ($key = key($fruits)) {  
    printf("%s <br />", $key);  
    next($fruits);  
}  
  
// apple   
// banana
Copier après la connexion

注意,每次调用key()时不会移动指针。为此需要使用next()函数,这个函数的唯一作用就是完成推进指针的任务。

11. 获取当前数组值 current()

current()函数返回数组中当前指针所在位置的数组值。其形式如下:

mixed current(array array)
Copier après la connexion

下面修改前面的例子,这一次我们要获取数组值:

$fruits = array("apple"=>"red", "banana"=>"yellow");  
while ($fruit = current($fruits)) {  
    printf("%s <br />", $fruit);  
    next($fruits);  
}  
  
// red   
// yellow
Copier après la connexion

12. 获取当前数组键和值 each()

each()函数返回input_array的当前键/值对,并将指针推进一个位置。其形式如下:

array each(array array)
Copier après la connexion


返回的数组包含四个键,键0和key包含键名,而键1和value包含相应的数据。如果执行each()前指针位于数组末尾,则返回false。

$fruits = array("apple", "banana", "orange", "pear");  
print_r ( each($fruits) );  
  
// Array ( [1] => apple [value] => apple [0] => 0 [key] => 0 )
Copier après la connexion

each() 经常和 list() 结合使用来遍历数组。本例与上例类似,不过循环输出了整个数组:

$fruits = array("apple", "banana", "orange", "pear");  
reset($fruits);  
  
while (list($key, $val) = each($fruits))  
    {  
        echo "$key => $val<br />";  
    }  
  
// 0 => apple  
// 1 => banana  
// 2 => orange  
// 3 => pear
Copier après la connexion

因为将一个数组赋值给另一个数组时会重置原来的数组指针,因此在上例中如果我们在循环内部将 $fruits 赋给了另一个变量的话将会导致无限循环。

这就完成了数组的遍历。

查找、筛选与搜索数组元素是数组操作的一些常见功能。下面来介绍一下几个相关的函数。


13. in_array()函数

in_array()函数在一个数组汇总搜索一个特定值,如果找到这个值返回true,否则返回false。其形式如下:


boolean in_array(mixed needle,array haystack[,boolean strict]);
Copier après la connexion


来看下面的例子,查找变量apple是否已经在数组中,如果在,则输出一段信息:

$fruit = "apple";   
$fruits = array("apple","banana","orange","pear");   
if( in_array($fruit,$fruits) )    
    echo "$fruit 已经在数组中";
Copier après la connexion

第三个参数可选,它强制in_array()在搜索时考虑类型。

14. array_key_exists()函数

如果在一个数组中找到一个指定的键,函数array_key_exists()返回true,否则返回false。其形式如下:

boolean array_key_exists(mixed key,array array);
Copier après la connexion


下面的例子将在数组键中搜索apple,如果找到,将输出这个水果的颜色:

$fruit["apple"] = "red";  
$fruit["banana"] = "yellow";  
$fruit["pear"] = "green";  
if(array_key_exists("apple", $fruit)){  
    printf("apple&#39;s color is %s",$fruit["apple"]);  
}  
  
//apple&#39;s color is red
Copier après la connexion


15. array_search()函数

array_search()函数在一个数组中搜索一个指定的值,如果找到则返回相应的键,否则返回false。其形式如下:

mixed array_search(mixed needle,array haystack[,boolean strict])
Copier après la connexion


下面的例子在$fruits中搜索一个特定的日期(December 7),如果找到,则返回相应州的有关信息:

$fruits["apple"] = "red";  
$fruits["banana"] = "yellow";  
$fruits["watermelon"]="green";  
$founded = array_search("green", $fruits);  
if($founded)   
    printf("%s was founded on %s.",$founded, $fruits[$founded]);  
  
//watermelon was founded on green.
Copier après la connexion


16. array_keys()函数

array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有键。其形式如下:

array array_keys(array array[,mixed search_value])
Copier après la connexion


如果包含可选参数search_value,则只会返回与该值匹配的键。下面的例子将输出$fruit数组中找到的所有数组:

$fruits["apple"] = "red";  
$fruits["banana"] = "yellow";  
$fruits["watermelon"]="green";  
$keys = array_keys($fruits);  
print_r($keys);  
  
//Array ( [0] => apple [1] => banana [2] => watermelon )
Copier après la connexion

17. array_values()函数

array_values()函数返回一个数组中的所有值,并自动为返回的数组提供数值索引。其形式如下:

array array_values(array array)
Copier après la connexion


下面的例子将获取$fruits中找到的各元素的值:

$fruits["apple"] = "red";  
$fruits["banana"] = "yellow";  
$fruits["watermelon"]="green";  
$values = array_values($fruits);  
print_r($values);  
  
//Array ( [0] => red [1] => yellow [2] => green )
Copier après la connexion


有时候我们需要扩展一个数组,或者删掉数组的一部分,PHP为扩展和缩小数组提供了一些函数。对于那些希望模仿各种队列实现(FIFO、LIFO)的程序员来说,这些函数可以提供便利。顾名思义,从这些函数的函数名(push、pop、shift和unshift)就清楚地反映出其作用。

PS:传统的队列是一种数据结构,删除元素与加入元素的顺序相同,就称为先进先出,或FIFO。相反,栈是另外一种数据结构,其中删除元素的顺序与加入时的顺序相反,这成为后进先出,或LIFO。


18. 在数组头添加元素

array_unshift()函数在数组头添加元素。所有己有的数值键都会相应地修改,以反映其在数组中的新位置,但是关联键不受影响。其形式如下:

int array_unshift(array array,mixed variable[,mixed variable])
Copier après la connexion

下面这个例子在$fruits数组前面添加了两种水果:

$fruits = array("apple","banana");  
array_unshift($fruits,"orange","pear")  
// $fruits = array("orange","pear","apple","banana");
Copier après la connexion

19. 在数组尾添加元素

array_push()函数的返回值是int型,是压入数据后数组中元素的个数,可以为此函数传递多个变量作为参数,同时向数组压入多个变量。其形式为:

(array array,mixed variable [,mixed variable...])
Copier après la connexion

下面这个例子在$fruits数组中又添加了两个水果:

$fruits = array("apple","banana");  
array_push($fruits,"orange","pear")  
//$fruits = array("apple","banana","orange","pear")
Copier après la connexion

20. 从数组头删除值

array_shift()函数删除并返回数组中找到的元素。其结果是,如果使用的是数值健,则所有相应的值都会下移,而使用关联键的数组不受影响。其形式为

mixed array_shift(array array)
Copier après la connexion

下面的例子删除了$fruits数组中的第一个元素apple:

$fruits = array("apple","banana","orange","pear");  
$fruit = array_shift($fruits);  
// $fruits = array("banana","orange","pear")  
// $fruit = "apple";
Copier après la connexion

21. 从数组尾删除元素

array_pop()函数删除并返回数组的最后一个元素。其形式为:

mixed array_pop(aray target_array);
Copier après la connexion

下面的例子从$states数组删除了最后的一个州:

$fruits = array("apple","banana","orange","pear");  
$fruit = array_pop($fruits);  
//$fruits = array("apple","banana","orange");  
//$fruit = "pear";
Copier après la connexion

以上就是PHP数组函数(合并,拆分,追加,查找,删除等)的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


É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