Maison > Article > développement back-end > Utilisation détaillée de la fonction array_merge en php (avec exemples)
Cet article vous présente l'utilisation détaillée de la fonction array_merge en PHP (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
array_merge Cette fonction est très pratique et couramment utilisée, mais elle possède certaines fonctionnalités qui peuvent causer des problèmes si vous n'y faites pas attention. Ce problème s'est produit lorsque je modifiais le code de mon collègue il y a quelques jours, j'ai donc recherché quelques informations et les ai notées.
Définition et syntaxe
array array_merge ( array $array1 [, array $... ] )La syntaxe est simple et la valeur de retour est le tableau fusionné (pas toujours la valeur de retour attendue).
Instance
<?php // 索引数组 $arr1 = array(0 => 'apple', 1 => 'banana'); $arr2 = array(1 => 'pear', 2 => 'orange'); $arr3 = array('pitaya' => '火龙果'); print_r(array_merge($arr1, $arr2));// array_merge会重建索引 Array ( [0] => apple [1] => banana [2] => pear [3] => orange ) echo '<br />'; print_r(array_merge($arr1, $arr2, $arr3));// 索引数组和关联数组合并 Array ( [0] => apple [1] => banana [2] => pear [3] => orange [pitaya] => 火龙果 ) echo '<br />'; // 索引数组不会覆盖,但是使用 + 的话,前面的值会覆盖后面相同索引的值 print_r($arr1 + $arr2);// Array ( [0] => apple [1] => banana [2] => orange ) echo '<br />'; // 关联数组 $arr1 = array('apple' => '苹果', 'banana' => '香蕉'); $arr2 = array('apple' => '黄元帅苹果', 'orange' => '橙子'); print_r(array_merge($arr1, $arr2));// Array ( [apple] => 黄元帅苹果 [banana] => 香蕉 [orange] => 橙子 ) echo '<br />'; // 后面的值会覆盖前面相同key的值,而使用 + 则正好相反,前面的值会覆盖后面的值 print_r($arr1 + $arr2);// Array ( [apple] => 苹果 [banana] => 香蕉 [orange] => 橙子 )
Remplir les fosses
Alors, quels sont les soi-disant pièges de array_merge ?
En utilisation réelle, le framework est utilisé pour interroger les données de la base de données, et ce qui est renvoyé est un tableau à deux dimensions ou un tableau à une dimension. Mais si les données ne peuvent pas être interrogées, null sera renvoyé si array_merge est utilisé à ce moment, une erreur se produira. Le
<?php $arr1 = array('apple', 'pear'); $arr2 = null; $arr3 = array_merge($arr1, $arr2); var_dump($arr3); // Warning: array_merge(): Argument #2 is not an array in D:\WWW\test.php on line 6 // NULL
suivant générera un avertissement et la valeur de retour de array_merge sera nulle.
La méthode de traitement n'est pas difficile, il suffit de convertir les paramètres dans un tableau et vous pouvez encapsuler la fonction pour le traitement. Ce qu'il convient de noter, c'est comment gérer le paramètre false. Comme suit
<?php /** * 完善 array_merge * 将所有参数转换为数组,null、false 转换为空数组 * @param array ...$args * @return array */ function array_merge_perfect(...$args) { $fun = function ($value) { if ($value === false) { return array(); } return (array)$value; }; // 将所有参数都转换为 array 类型 $arr = array_map($fun, $args); $newArray = array(); foreach ($arr as $key => $value) { $newArray = array_merge($newArray, $value); } return $newArray; } $arr1 = array('test' => array('apple', 'pear'), 'test1' => array('apple', 'pear')); $arr2 = false; $arr3 = null; print_r((array)$arr2);// Array ( [0] => ) echo '<br />'; print_r((array)$arr3);// Array ( ) echo '<br />'; print_r(array_merge_perfect($arr1, $arr2));// Array ( [test] => Array ( [0] => apple [1] => pear ) [test1] => Array ( [0] => apple [1] => pear ) ) echo '<br />'; print_r(array_merge_perfect($arr1, $arr3));// Array ( [test] => Array ( [0] => apple [1] => pear ) [test1] => Array ( [0] => apple [1] => pear ) ) echo '<br />'; print_r(array_merge_perfect($arr2, $arr3));// Array ( ) echo '<br />';
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!