2012-07-14 33 views
6

संभव डुप्लिकेट:
Are PHP Associative Arrays ordered?क्या PHP एसोसिएटिव सरणी में ऑर्डर देता है?

मैं अलग कुंजी के साथ साहचर्य सरणी में आइटम जोड़ने, तो इसके अलावा के आदेश संरक्षित करता है? मैं दिए गए तत्व के "पिछले" और "अगले" तत्वों को कैसे एक्सेस कर सकता हूं?

उत्तर

12

हां, PHP arrays के पास एक निहित आदेश है। reset, next, prev और current - या केवल foreach loop - इसका निरीक्षण करने के लिए उपयोग करें।

9

हां, यह आदेश को संरक्षित करता है। आप ordered hash maps के रूप में php arrays के बारे में सोच सकते हैं।

आप "इंडेक्स निर्माण समय" द्वारा आदेशित तत्वों के बारे में सोच सकते हैं।

$a = array(); 
$a['x'] = 1; 
$a['y'] = 1; 
var_dump($a); // x, y 

$a = array(); 
$a['x'] = 1; 
$a['y'] = 1; 
$a['x'] = 2; 
var_dump($a); // still x, y even though we changed the value associated with the x index. 

$a = array(); 
$a['x'] = 1; 
$a['y'] = 1; 
unset($a['x']); 
$a['x'] = 1; 
var_dump($a); // y, x now! we deleted the 'x' index, so its position was discarded, and then recreated 

संक्षेप करने के उदाहरण

के लिए, आप एक प्रवेश जहां एक प्रमुख does not को वर्तमान में सरणी में मौजूद जोड़ रहे हैं, प्रवेश की स्थिति सूची के अंत हो जाएगा। यदि आप किसी मौजूदा कुंजी के लिए प्रविष्टि अपडेट कर रहे हैं, तो स्थिति अपरिवर्तित है।

foreach ऊपर दिखाए गए प्राकृतिक आदेश का उपयोग करके सरणी पर लूप। आप next() current() prev() reset() और दोस्तों को भी पसंद कर सकते हैं, यदि आप चाहें, हालांकि वे शायद ही कभी भाषा में पेश किए जाने के बाद से शायद ही कभी उपयोग किए जाते हैं।

भी, print_r() और var_dump() प्राकृतिक सरणी आदेश का उपयोग करके अपने परिणाम आउटपुट भी करते हैं।

यदि आप जावा से परिचित हैं, तो LinkedHashMap सबसे समान डेटा संरचना है।

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

  • कोई संबंधित समस्या नहीं^_^