2012-07-22 17 views
6
$array = array('a', 'b','c'); 
unset($array[0]); 
var_dump($array); 

Yields: 
array(1) { 
    [1]=> 
    'b' 
    'c' 
} 

मैं कैसे, सरणी निकालूँ [0] [ 'bb', 'सीसी'] (कोई खाली कुंजी) प्राप्त करने के लिए:सरणी से कुंजी को कैसे हटाएं और इंडेक्स अपडेट करें?

array(1) { 
    'b' 
    'c' 
} 
+0

array_values ​​() को सेट किए बिना के बाद काम करेगा –

उत्तर

18

चेक करें:

$array = array('a', 'b','c'); 
unset($array[0]); 
$array = array_values($array); //reindexing 
13

array_splice()

$array = array_splice($array, 0, 1); 

पर एक नजर डालें यदि आप पहले तत्व को विशेष रूप से हटा रहे हैं (और सरणी के बीच में मनमाना तत्व नहीं), array_shift() अधिक उपयुक्त है।

+0

+1, की तुलना में 'सेट नहीं/array_values' कॉम्बो एक बेहतर विकल्प। –

+0

यह अनसेट/array_values ​​की तुलना में बेहतर विकल्प क्यों है? स्पीड? – Bashevis

+1

@ बासेविस: एक गति लाभ है, हां। तर्कसंगत रूप से और भी महत्वपूर्ण, हालांकि: यह क्लीनर और स्पष्ट है। 'array_slice()' को यह सही चीज़ करने के लिए डिज़ाइन किया गया है। कोई फर्क नहीं पड़ता कि जब आप उस फंक्शन कॉल को देखते हैं तो क्या हो रहा है। 'सेट नहीं(); array_values ​​(); 'एक ही चीज़ को पूरा करता है लेकिन यह दो अलग-अलग चरणों में करता है, जो पाठक को परिणामों को काम करने के लिए मजबूर करता है - यानी यह पता लगाने के लिए कि यह' array_slice() 'करने का एक तरीका है। – VoteyDisciple

संबंधित मुद्दे