PHP शाब्दिक कुंजी के साथ साहचर्य सरणी प्रस्तुत करता है?


112

क्या शाब्दिक कुंजी => मूल्य जोड़े के साथ एक साहचर्य सरणी को प्रस्तुत करना संभव है? मुझे पता है कि array_unshift () संख्यात्मक कुंजियों के साथ काम करता है, लेकिन मैं ऐसी चीज़ की उम्मीद कर रहा हूं जो शाब्दिक कुंजियों के साथ काम करेगी।

एक उदाहरण के रूप में मैं निम्नलिखित करना चाहूंगा:

$array1 = array('fruit3'=>'apple', 'fruit4'=>'orange');
$array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry');

// prepend magic

$resulting_array = ('fruit1'=>'cherry', 
                    'fruit2'=>'blueberry', 
                    'fruit3'=>'apple', 
                    'fruit4'=>'orange');

जवाबों:


219

क्या आप ऐसा नहीं कर सकते:

$resulting_array = $array2 + $array1;

?


15
यह भी देखें array_merge () और इसका अंतर + ऑपरेटर का उपयोग करने से: br.php.net/manual/en/function.array-merge.php#92602
हैवनार्ड

2
@ क्लेटस: शीश। हाँ, मैं कर सकता हूँ। निश्चित नहीं है कि मुझे क्या लगता है कि मैं कर सकता था या जो पहले काम नहीं कर रहा था। जवाब देने के लिए धन्यवाद।
कॉलिन ब्रॉक

यह अंतर ध्यान देने योग्य है लेकिन यह अंतर संख्यात्मक कुंजियों को संरक्षित करने के लिए प्रासंगिक है और यह सरणी स्ट्रिंग कुंजियों के साथ "शुद्ध" साहचर्य सरणी है।
cletus

29

जवाब न है। आप एक कुंजी-मूल्य जोड़ी के साथ एक सहयोगी सरणी को प्रस्तुत नहीं कर सकते।

हालाँकि, आप एक नया सरणी बना सकते हैं जिसमें यूनियन ऑपरेटर के साथ सरणी की शुरुआत में नई कुंजी-मूल्य जोड़ी है +। हालांकि परिणाम एक पूरी तरह से नया सरणी है और नए सरणी को बनाने में O (n) जटिलता है।

वाक्य रचना नीचे है।

$new_array = array('new_key' => 'value') + $original_array;

नोट: array_merge () का उपयोग न करें। array_merge () कुंजियों को ओवरराइट करता है और संख्यात्मक कुंजियों को संरक्षित नहीं करता है।


"कुंजियों को अधिलेखित करता है और संख्यात्मक कुंजियों को संरक्षित नहीं करता है" ... क) यूनियन ऑपरेटर ("+") "डुप्लिकेट" कुंजियों को कैसे संभालता है? पुन: सांख्यिक कुंजियों को संरक्षित नहीं: वांछित
ब्रैड केंट

16

अपनी स्थिति में, आप array_merge () का उपयोग करना चाहते हैं:

array_merge(array('fruit1'=>'cherry', 'fruit2'=>'blueberry'), array('fruit3'=>'apple', 'fruit4'=>'orange'));

एक मान के लिए, साहचर्य सरणी के लिए, array_unshift () के बजाय, फिर से array_mersh का उपयोग करें (:

array_merge(array($key => $value), $myarray);

5

@ क्लेटस ऑन स्पॉट है। बस जोड़ने के लिए, यदि इनपुट सरणियों में तत्वों का क्रम अस्पष्ट है, और आपको अंतिम सरणी को क्रमबद्ध करने की आवश्यकता है, तो आप ksort करना चाहते हैं :

$resulting_array = $array1 + $array2;
ksort($resulting_array);

4
एक देर से नोट के रूप में, ksortबूलियन लौटाता है, इसलिए उपरोक्त दो बयानों के रूप में किए जाने की आवश्यकता है, जैसे कि $a = $array1 + $array2; ksort($a);, नहीं $resulting_arrayतो एक बूलियन मूल्य होगा जिस सरणी की आप अपेक्षा नहीं कर रहे थे।
एल योबो

3

@Mvpetrovich के समान विधि का उपयोग करके, आप सिंटैक्स को छोटा करने के लिए किसी सरणी के शॉर्टहैंड संस्करण का उपयोग कर सकते हैं।

$_array = array_merge(["key1" => "key_value"], $_old_array);

संदर्भ:

PHP: array_merge ()

PHP: एरेस - मैनुअल

PHP 5.4 के रूप में आप शॉर्ट ऐरे सिंटैक्स का भी उपयोग कर सकते हैं, जो एरी [] के साथ एरे () को बदलता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.