2012-05-05 10 views
6

मैं एक सरणी है कि इस तरह दिखता है:आरोही नंबर के साथ सरणी कुंजी बदलें

[867324] 
    [id] => 867324 
    [name] => Example1 

[345786]  
    [id] => 345786 
    [name] => Example2 

[268531] 
    [id] => 268531 
    [name] => Example3 

तो जैसा कि आप देख सकते हैं, पहला तत्व किसी भी विशिष्ट क्रम में नहीं हैं। उदाहरण के उद्देश्य के लिए, आप उन्हें यादृच्छिक संख्याओं पर विचार कर सकते हैं। अंत परिणाम मैं समाप्त करना चाहता हूं:

[0] 
    [id] => 867324 
    [name] => Example1 

[1]  
    [id] => 345786 
    [name] => Example2 

[2] 
    [id] => 268531 
    [name] => Example3 

मैंने विस्फोट करने की कोशिश की है, लेकिन स्पष्ट रूप से मुझे कुछ गलत करना होगा। किसी भी मदद की सराहना की है!

उत्तर

26

यह तत्वों के क्रम को संरक्षित करते समय चाबियों की मरम्मत करेगा। इस विधि जैसे एक सरणी का उपयोग करना

$array = array_values($array); 

:

$new_array = array_values($old_array); 
+1

था वह एक है! – Nadh

+0

आह, यही वह है। अब सिर्फ जिज्ञासा - इस तरह की प्रक्रिया काफी बड़ी सरणी के लिए कितनी तेजी से है? –

+0

यह धीमा है। मैंने बार-बार एक 1000 तत्व सरणी को फिर से शुरू करने के लिए एक स्क्रिप्ट को मार दिया, और मेरी 2.8GHz मशीन प्रति सेकंड 8,000 पुनरावृत्तियों को मुश्किल से प्रबंधित कर सकती है। यदि आप कुछ दर्जन से अधिक तत्व हैं तो आप निश्चित रूप से प्रत्येक पृष्ठ लोड पर ऐसा नहीं करना चाहते हैं। – kijin

2

यदि तत्वों का क्रम कोई फर्क नहीं पड़ता है, तो मेरा मानना ​​है कि PHPs सॉर्ट विधि इंडेक्स को बनाए रखेगी। http://www.php.net/manual/en/function.sort.php

sort($array); 

नोट: यह समारोह सरणी में तत्वों के लिए नई चाबी प्रदान करती है। यह किसी मौजूदा कुंजी को हटा देगा जो कि चाबियों को फिर से व्यवस्थित करने के बजाय असाइन किया गया हो सकता है।

अद्यतन: यह काम करता है, हालांकि array_values ​​विधि का उल्लेख अधिक समझ में आता है।

+1

हाँ , सब अच्छा है :) –

7

आप array_values() का उपयोग कर सरणी कुंजी रीसेट कर सकते हैं

Array('123'=>'123', 
     '456'=>'456', 
     '789'=>'789') 

तरह renumbered किया जाएगा:

Array('0'=>'123', 
     '1'=>'456', 
     '2'=>'789') 
संबंधित मुद्दे