Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में array_merge vs Array Union (+) Operator का अंतर


PHP में दो arrays को merge करने के दो तरीके: array_merge() और + (union) operator। दोनों का व्यवहार अलग है।

Array Union Operator (+)

First array के keys को priority देता है। Duplicate keys पर first array का value रखता है।

<?php
$arr1 = ['p' => 150, 'q' => 100, 'r' => 120];
$arr2 = ['t' => 115, 'q' => 999, 'u' => 103]; // 'q' duplicate

$result = $arr1 + $arr2;

print_r($result);
/*
Array
(
    [p] => 150      // from arr1
    [q] => 100      // from arr1 (first wins!)
    [r] => 120      // from arr1
    [t] => 115      // from arr2
    [u] => 103      // from arr2
)
*/
// Note: arr2 का 'q' => 999 ignored हुआ

array_merge()

Later arrays के values से overwrite करता है। Numeric keys re-index होते हैं।

<?php
$arr1 = ['p' => 150, 'q' => 100, 'r' => 120];
$arr2 = ['t' => 115, 'q' => 999, 'u' => 103];

$result = array_merge($arr1, $arr2);

print_r($result);
/*
Array
(
    [p] => 150
    [q] => 999      // arr2 से overwrite हुआ!
    [r] => 120
    [t] => 115
    [u] => 103
)
*/

Numeric Keys के साथ व्यवहार

<?php
$arr1 = [0 => 'a', 1 => 'b'];
$arr2 = [0 => 'c', 1 => 'd'];

// Union (+) - keys preserve करता है
var_dump($arr1 + $arr2);
// array(2) { [0]=>'a' [1]=>'b' } - arr2 ignored!

// array_merge() - re-index करता है
var_dump(array_merge($arr1, $arr2));
// array(4) { [0]=>'a' [1]=>'b' [2]=>'c' [3]=>'d' }

तुलना तालिका

विशेषताarray_merge()+ Union
String keys collisionLater wins (overwrites)First wins (preserves)
Numeric keysRe-indexed (0, 1, 2...)Preserved (collision = first wins)
PerformanceSlightly slowerFaster
Return typeNew arrayNew array
Null handlingNull values keptNull values kept

व्यावहारिक उदाहरण

<?php
// Config merging: defaults + user config
$defaults = [
    'host' => 'localhost',
    'port' => 3306,
    'debug' => false,
    'timeout' => 30
];

$userConfig = [
    'host' => 'db.example.com',
    'debug' => true
];

// Option 1: User config overrides defaults (array_merge)
$config = array_merge($defaults, $userConfig);
// Result: host=db.example.com, debug=true, port=3306, timeout=30

// Option 2: Defaults preserve, only add missing (union)
$config = $userConfig + $defaults;
// Result: host=db.example.com, debug=true, port=3306, timeout=30
// Same in this case because no numeric keys

// Multiple arrays merge
$config = array_merge($defaults, $envConfig, $userConfig, $runtimeConfig);
// Last one wins for duplicates

Recursive Merge (Deep Merge)

<?php
function arrayMergeRecursive(array ...$arrays): array {
    $result = [];
    
    foreach ($arrays as $array) {
        foreach ($array as $key => $value) {
            if (isset($result[$key]) && is_array($result[$key]) && is_array($value)) {
                $result[$key] = arrayMergeRecursive($result[$key], $value);
            } else {
                $result[$key] = $value;
            }
        }
    }
    
    return $result;
}

// या PHP 8.0+ में
$result = array_merge_recursive(...$arrays); // लेकिन यह numeric keys duplicate करता है!

सिफारिश

  • Configuration merging: array_merge() (user overrides defaults)
  • Preserving original keys: + operator
  • Numeric indexed arrays combine:array_merge() (re-indexing wanted)
  • Associative arrays combine (no overwrite):+ operator
  1. डायरेक्टएक्स 11 और डायरेक्टएक्स 12 में क्या अंतर है? डायरेक्टएक्स 11 और डायरेक्टएक्स 12 में क्या अंतर है?

    डायरेक्टएक्स एपीआई का एक संग्रह है, या एप्लिकेशन प्रोग्रामिंग इंटरफेस, जिसका उपयोग सॉफ्टवेयर द्वारा मल्टीमीडिया सामग्री को रेंडर करने और ग्राफिकल हार्डवेयर के साथ संचार करने के लिए किया जाता है। डायरेक्टएक्स का प्रमुख घटक एपीआई, डायरेक्ट3डी, सॉफ्टवेयर और ग्राफिक्स हार्डवेयर के बीच संचार को संभालता ह

  1. - C# में लिस्ट और ऐरे में क्या अंतर है?

    एक ऐरे एक ही प्रकार के एलिमेंट्स के निश्चित आकार के अनुक्रमिक संग्रह को स्टोर करता है, जबकि लिस्ट एक जेनेरिक कलेक्शन है।लिस्ट को परिभाषित करने के लिए:List myList = new List();लिस्ट में एलिमेंट्स सेट करने के लिए, आपको Add मेथड का उपयोग करना होगा:myList.Add(Audi); myList.Add(BMW); myList.Add(Chevrolet

  1. - पायथन लिस्ट और ऐरे में क्या अंतर है?

    मूल रूप से, पायथन लिस्ट्स बहुत लचीली हैं और पूरी तरह से विषम, मनमाना डेटा धारण कर सकती हैं, और उन्हें एमोर्टाइज्ड कॉन्स्टेंट टाइम में बहुत कुशलता से जोड़ा जा सकता है। यदि आपको अपनी ऐरे को समय-कुशलता से और बिना परेशानी के सिकोड़ने और बढ़ाने की आवश्यकता है, तो वे जाने का रास्ता हैं। लेकिन वे C ऐरे क