2011-09-22 15 views
8

क्या PHP के पास ऑर्डर्ड डिक्शनरी है, जैसे कि Python में? आईई, प्रत्येक कुंजी मूल्य जोड़ी के अतिरिक्त इसके साथ जुड़े एक ordinal है।क्या PHP के पास आदेश दिया गया शब्दकोश है?

+2

AFAIK, कोई लेकिन पता करने के लिए – Kumar

उत्तर

5

इस प्रकार PHP एरे बॉक्स से बाहर काम करते हैं। प्रत्येक कुंजी/मूल्य जोड़ी में एक क्रमिक संख्या होती है, इसलिए सम्मिलन आदेश याद किया जाता है। आप आसानी से यह अपने आप को परीक्षण कर सकते हैं:

http://ideone.com/sXfeI

+3

आह प्यार होता है, लेकिन आप, कहते हैं, फिर से जोड़कर तत्वों * सामूहिक रूप से हटाने/* बिना किसी अन्य तत्व से पहले एक तत्व सम्मिलित कर सकते हैं? –

+3

दुर्भाग्य से नहीं। कुछ ऐसा करने के लिए आपको एक संख्यात्मक अनुक्रमित सरणी रखना होगा, ताकि आप यादृच्छिक ऑफ़सेट पर डालने के लिए 'array_splice' जैसे फ़ंक्शंस का उपयोग कर सकें। और यदि आपको किसी कुंजीपटल कुंजी के माध्यम से तत्वों तक पहुंचने में भी सक्षम होना आवश्यक है, तो आपको शायद किसी प्रकार की मैपिंग सरणी की आवश्यकता होगी, जो अनुक्रमित सरणी में उनके संबंधित मानों के लिए dict कुंजी को मानचित्र करता है। –

3

अगर मैं सही ढंग अजगर डॉक्स में वर्णन को समझते हैं, तो हाँ। PHP Arrays वास्तव में केवल नक्शे का आदेश दिया गया है:

PHP में एक सरणी वास्तव में एक आदेश दिया गया मानचित्र है। नक्शा एक प्रकार है जो मूल्यों को कुंजी से जोड़ता है। इस प्रकार को कई अलग-अलग उपयोगों के लिए अनुकूलित किया गया है; इसे एक सरणी, सूची (वेक्टर), हैश टेबल (मानचित्र का कार्यान्वयन), शब्दकोश, संग्रह, ढेर, कतार, और शायद अधिक के रूप में माना जा सकता है। जैसे सरणी मान अन्य सरणी हो सकते हैं, पेड़ और बहुआयामी सरणी भी संभव हैं।

PHP Array docs

+0

क्या होता है जब आप एक कुंजी डालते हैं जो पहले से मौजूद है? ऐसा लगता है कि कुंजी को जगह छोड़नी है, लेकिन क्या यह गारंटी है? http://ideone.com/iTVMW – Casebash

+1

यह उस ऑफसेट में मान को बदल देता है जो पहले से ही है। –

2

पीएचपी सरणियों डिफ़ॉल्ट रूप से इस तरह से काम करते हैं।

$arr = array('one' => 1, 'two' => 2, 'three' => 3, 'four' => 4); 
var_dump($arr); // 1, 2, 3, 4 

unset($arr['three']); 
var_dump($arr); // 1, 2, 4 

$arr['five'] = 5; 
var_dump($arr); // 1, 2, 4, 5 
संबंधित मुद्दे