Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Verwendung der Funktion array_merge in PHP (mit Beispielen)

Detaillierte Verwendung der Funktion array_merge in PHP (mit Beispielen)

不言
不言nach vorne
2019-01-16 10:16:468370Durchsuche

Dieser Artikel stellt Ihnen die Verwendung der array_merge-Funktion in PHP detailliert vor (mit Beispielen). Freunde in Not können darauf verweisen.

array_merge Diese Funktion ist sehr praktisch und wird häufig verwendet, verfügt jedoch über einige Funktionen, die zu Problemen führen können, wenn Sie nicht vorsichtig sind. Dieses Problem trat auf, als ich vor ein paar Tagen den Code meines Kollegen änderte, also habe ich einige Informationen nachgeschlagen und sie aufgeschrieben.

Definition und Syntax

array array_merge ( array $array1 [, array $... ] )
Ein oder mehrere Arrays zusammenführen.
Wenn im Eingabearray derselbe Zeichenfolgenschlüsselname vorhanden ist, überschreibt der Wert nach dem Schlüsselnamen den vorherigen Wert. Wenn das Array jedoch numerische Schlüssel enthält, überschreiben die nachfolgenden Werte nicht die ursprünglichen Werte, sondern werden an diese angehängt.

Die Syntax ist einfach und der Rückgabewert ist das zusammengeführte Array (nicht immer der erwartete Rückgabewert).

Instanz

<?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] => 橙子 )

Lücken füllen

Was sind also die sogenannten Fallstricke von array_merge?
Bei der tatsächlichen Verwendung wird das Framework zum Abfragen von Daten aus der Datenbank verwendet, und was zurückgegeben wird, ist ein zweidimensionales Array oder ein eindimensionales Array. Wenn die Daten jedoch nicht abgefragt werden können, wird null zurückgegeben. Wenn array_merge zu diesem Zeitpunkt verwendet wird, tritt ein Fehler auf. Das folgende

<?php

$arr1 = array(&#39;apple&#39;, &#39;pear&#39;);
$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

generiert eine Warnung und der Rückgabewert von array_merge ist null.
Die Verarbeitungsmethode ist nicht schwierig. Konvertieren Sie einfach die Parameter in ein Array und Sie können die Funktion zur Verarbeitung kapseln. Zu beachten ist, wie mit dem Parameter false umgegangen wird. Wie folgt

<?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 />';

Das obige ist der detaillierte Inhalt vonDetaillierte Verwendung der Funktion array_merge in PHP (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen