$test = array('hi');
$test += array('test','oh');
var_dump($test);
+
PHP में सरणी के लिए क्या मतलब है?
array_merge
? यह ऐसा है जैसे कि ऐरे डिफॉल्ट एसोसिएटिव ऐरे हैं और न्यूमेरिक ऐरे द्वितीय श्रेणी के नागरिक हैं।
$test = array('hi');
$test += array('test','oh');
var_dump($test);
+
PHP में सरणी के लिए क्या मतलब है?
array_merge
? यह ऐसा है जैसे कि ऐरे डिफॉल्ट एसोसिएटिव ऐरे हैं और न्यूमेरिक ऐरे द्वितीय श्रेणी के नागरिक हैं।
जवाबों:
भाषा ऑपरेटरों पर PHP मैनुअल से उद्धरण
+ ऑपरेटर बाएं हाथ के सरणी में दाहिने हाथ के सरणी को जोड़ता है; उन कुंजियों के लिए जो दोनों सरणियों में मौजूद हैं, बाएं-बाएं सरणी से तत्वों का उपयोग किया जाएगा, और दाएं-हाथ सरणी से मिलान वाले तत्वों को अनदेखा किया जाएगा।
इसलिए यदि आप
$array1 = ['one', 'two', 'foo' => 'bar'];
$array2 = ['three', 'four', 'five', 'foo' => 'baz'];
print_r($array1 + $array2);
तुम्हे मिल जाएगा
Array
(
[0] => one // preserved from $array1 (left-hand array)
[1] => two // preserved from $array1 (left-hand array)
[foo] => bar // preserved from $array1 (left-hand array)
[2] => five // added from $array2 (right-hand array)
)
तो तर्क +
निम्न स्निपेट के बराबर है:
$union = $array1;
foreach ($array2 as $key => $value) {
if (false === array_key_exists($key, $union)) {
$union[$key] = $value;
}
}
यदि आप सी-स्तरीय कार्यान्वयन प्रमुख के विवरण में रुचि रखते हैं
ध्यान दें, यह इस +
बात से भिन्न है कि array_merge()
सरणियों को कैसे संयोजित किया जाएगा:
print_r(array_merge($array1, $array2));
आपको देगा
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[foo] => baz // overwritten from $array2
[2] => three // appended from $array2
[3] => four // appended from $array2
[4] => five // appended from $array2
)
अधिक उदाहरणों के लिए लिंक किए गए पृष्ठ देखें।
+
और हुड के तहत array_merge
कॉल zend_hash_merge
करते हैं। यह भी अपेक्षित है, क्योंकि PHP सरणियों को आदेशित हैश मानचित्रों के रूप में कार्यान्वित किया जाता है।
+
और array_merge
विकृत और unintuitive है। वे विपरीत तरीके से गोल होते हैं कि एक सादा-अंग्रेजी पढ़ने वाला आपको सहज रूप से 'जोड़ने' या 'विलय' करने के लिए क्या कहता है। अन्य भाषाओं / पुस्तकालयों का उपयोग +
सूचियों (जैसे पायथन) और "विलय" के लिए होता है, जो कि एक वस्तु पर दूसरी वस्तु से कुंजी / मान जोड़े को जोड़ने के लिए कार्य करता है (उदाहरण के लिए लताड़ में)। फिर भी PHP में यह दूसरा तरीका है; array_merge
सूची-जैसे सरणियों के लिए उपयोग किया जा सकता है, लेकिन +
नहीं कर सकते। इसके विपरीत array_merge
, +
हमेशा वह ऑपरेशन करता है जिसे किसी अन्य भाषा में "मर्ज" कहा जाएगा।
array_concat
बनाया जा सकता है array_merge
।
इसका उपयोग करने के लिए मुझे जो सबसे अच्छा उदाहरण मिला, वह एक कॉन्फ़िगरेशन सरणी में है।
$user_vars = array("username"=>"John Doe");
$default_vars = array("username"=>"Unknown", "email"=>"no-reply@domain.com");
$config = $user_vars + $default_vars;
$default_vars
, के रूप में यह पता चलता है, मूलभूत मूल्यों के लिए सरणी है। $user_vars
सरणी मूल्यों में परिभाषित के ऊपर लिख देगा $default_vars
। किसी भी लापता मान $user_vars
अब से चूक संस्करण हैं $default_vars
।
यह इस प्रकार होगा print_r
:
Array(2){
"username" => "John Doe",
"email" => "no-reply@domain.com"
}
आशा है कि ये आपकी मदद करेगा!
यह ऑपरेटर दो सरणियों का संघ लेता है (array_merge के समान है, सिवाय इसके कि array_merge डुप्लिकेट कुंजियों को ओवरराइट किया गया है)।
संख्यात्मक कुंजी के साथ कैरफ़ुल, यदि उन्हें संरक्षित किया जाना चाहिए या यदि आप कुछ भी ढीला नहीं करना चाहते हैं
$a = array(2 => "a2", 4 => "a4", 5 => "a5");
$b = array(1 => "b1", 3 => "b3", 4 => "b4");
संघ
print_r($a+$b);
Array
(
[2] => a2
[4] => a4
[5] => a5
[1] => b1
[3] => b3
)
मर्ज
print_r(array_merge($a, $b));
Array
(
[0] => a2
[1] => a4
[2] => a5
[3] => b1
[4] => b3
[5] => b4
)
+
ऑपरेटर के रूप में एक ही परिणाम का उत्पादन array_replace () । हालाँकि जब से ऑपरेटर के तर्क उलट हो जाते हैं, परिणामी सरणी का क्रम भी भिन्न हो सकता है।
इस पृष्ठ से एक और उदाहरण पर विस्तार:
$array1 = array('one', 'two', 'foo' => 'bar');
$array2 = array('three', 'four', 'five', 'foo' => 'baz');
print_r($array1 + $array2);
print_r(array_replace($array2, $array1)); //note reversed argument order
आउटपुट:
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[foo] => bar // preserved from $array1
[2] => five // added from $array2
)
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[2] => five // added from $array2
[foo] => bar // preserved from $array1
)
+
ऐनक द्वारा गारंटी का आदेश है ? किस बारे में array_replace
?
- ऐरे प्लस ऑपरेशन सभी ऐरे को एशोक एरे मानता है।
- जब प्लस के दौरान कुंजी संघर्ष, बाएं (पिछले) मान रखा जाएगा
मैं चीजों को स्पष्ट करने के लिए नीचे दिए गए कोड को पोस्ट करता हूं।
$a + $b = array_plus($a, $b)
function array_plus($a, $b){
$results = array();
foreach($a as $k=>$v) if(!isset($results[$k]))$results[$k] = $v;
foreach($b as $k=>$v) if(!isset($results[$k]))$results[$k] = $v;
return $results;
}
+=
जवाब था और स्वीकृत जवाब था+
। मेरे परीक्षण से वे ऐसा ही व्यवहार करने लगते हैं।