2011-04-25 15 views
93

मैं एक एसोसिएटिव सरणी की शुरुआत में कोई आइटम कैसे जोड़ सकता हूं? उदाहरण के लिए, मैं इस तरह एक सरणी है:PHP - एसोसिएटिव सरणी की शुरुआत में आइटम जोड़ें

$arr = array('key1' => 'value1', 'key2' => 'value2'); 

जब मैं $arr['key0'] = 'value0'; में के रूप में यह करने के लिए कुछ जोड़ने के लिए, मैं मिलता है: कि होने के लिए

Array 
(
    [key1] => value1 
    [key2] => value2 
    [key0] => value0 
)

मैं कैसे कर सकता हूँ

Array 
(
    [key0] => value0 
    [key1] => value1 
    [key2] => value2 
)

धन्यवाद,
टी

01,235,
+0

ध्यान दें कि [न्यूनतम कोड नमूने] (https://sscce.org/) अकेले परिवर्तनीय डंप से अधिक सहायक होते हैं (हालांकि उत्तरार्द्ध भी सहायक हो सकता है)। – outis

+0

संभव डुप्लिकेट [PHP अक्षरशैली कुंजी के साथ एसोसिएटिव सरणी प्रीपेड?] (Http://stackoverflow.com/questions/1371016/php-prepend-associative-array-with-literal-keys)। यह भी देखें: [PHP: Array_unshift एक संख्यात्मक सूचकांक] (http://stackoverflow.com/questions/4516664/php-array-unshift-an-not-numeric-index)। – outis

उत्तर

188

आप इस्तेमाल कर सकते हैं union operator:

$arr1 = array('key0' => 'value0') + $arr1; 

या array_merge

+3

कौन सा अधिक कुशल है? संघ या array_merge? अगर मैं पूछ सकता हूं ... – Melvin

+3

@melvin: शायद आप एक प्रदर्शन परीक्षा कर सकते हैं और हमें बता सकते हैं। –

+1

मुझे यकीन है कि संघ तेजी से है। –

19

एक तरह से array_merge साथ है:

<?php 
$arr = array('key1' => 'value1', 'key2' => 'value2'); 
$arr = array_merge(array('key0' => 'value0'), $arr); 

परिस्थितियों पर निर्भर करता है, तो आप भी ksort का उपयोग कर सकते।

+2

इससे इस मामले में कोई फर्क नहीं पड़ता है, लेकिन यदि कुंजी 'कुंजी' 'वाला तत्व पहले से ही '$ arr' में मौजूद है तो यह _value_ प्रीपेन्ड किए गए नए मान को ओवरराइट करेगा (यानी' 'value0'' ओवरराइट हो जाएगा) । आप इसे हल करने के लिए [यूनियन ऑपरेटर ('+')] (http://www.php.net/manual/en/language.operators.array.php) का उपयोग कर सकते हैं। – MrWhite

7
$array = array('key1' => 'value1', 'key2' => 'value2'); 
array_combine(array_unshift(array_keys($array),'key0'),array_unshift(array_values($array),'value0')) 
+22

+1 इतनी बदसूरत होने के लिए +1। – outis

+7

कोड, आदमी नहीं। क्या मैं उपयुक्त लिंग या दृढ़ता से था, मुझे यकीन है कि मैं आदमी को सुन्दर पाउंगा। – outis

+0

मान लीजिए कि मैं बस इतना छोटा होना पसंद करता हूं ... सबसे साफ या सबसे कुशल तरीका नहीं, लेकिन सिर्फ एक प्रदर्शन है कि PHP एक ही चीज करने के लिए विभिन्न तरीकों से असंख्य तरीके प्रदान करता है –

2

आप इसे ऊपर पुनरावृत्ति से पहले सरणियों तुम सिर्फ सरणी पर ksort() इस्तेमाल कर सकते हैं विलय करने के लिए नहीं करना चाहते हैं।

2
function unshift(array & $array, $key, $val) 
{ 
    $array = array_reverse($array, 1); 
    $array[$key] = $val; 
    $array = array_reverse($array, 1); 

    return $array; 
} 
संबंधित मुद्दे