2010-12-27 8 views
8

मुझे एक सरणी से डेटा मिल रहा है। किसी कारण से सरणी में [3.3] जैसे महत्वपूर्ण मान हैं जिन्हें मुझे डेटा पुनर्प्राप्त करने में समस्या हो रही है।प्रमुख मानों में अवधि के साथ सरणी के साथ काम करना

मेरे पास यह सरणी [3.3] => First Name [3.6] => Last Name[2] => [email protected] है।

जब मैं $array[3.3] पर कॉल करने का प्रयास करता हूं तो यह शून्य हो जाता है, लेकिन जब मैं $array[2] पर कॉल करता हूं तो मुझे ई-मेल दिया जाता है। कोई विचार?

उत्तर

21

उपयोग एकल उद्धरण जब कुंजी मान को संदर्भित (मूल रूप से एक स्ट्रिंग की तरह यह इलाज, कि PHP शायद क्या कर रहा है है)

echo $array['3.3']; 
+2

धन्यवाद चाल किया था। मुझे नहीं पता कि मैंने कोशिश क्यों नहीं की :) :)। – BandonRandon

+0

"लाइफसेवर" संकेत! :) –

+2

एक बात: यदि आपका '3.0' किसी चर (यानी $ x = '3.0'; ') में किसी भी मौके से है और आप '$ myarr [$ x] =" वाह! "करने की कोशिश कर रहे हैं। , आपको '$ myarr ["' {$ x} ''] =" वाह! "जैसे कुछ करने की आवश्यकता होगी। बस मेरे 5 सेंट ... – hummingBird

2

मुझे लगता है कि यह पीएचपी ब्लॉगकास्टिंग 3.3 => नाव

के साथ कुछ कार्य करने की है

कोशिश $ सरणी [ '3.3']

13
php पुस्तिका से

:

कुंजी में तैरता पूर्णांक के लिए छोटा कर रहे हैं।

तो तुम प्राप्त करने के लिए $ सरणी [3] जो मौजूद नहीं है कोशिश कर रहे हैं, तो आप अशक्त

+0

संदर्भ के लिए: https://bugs.php.net/bug.php? आईडी = 32671 – RedGlobe

8

एक प्रमुख या तो एक पूर्णांक या एक स्ट्रिंग हो सकता है मिलता है। यदि एक कुंजी पूर्णांक का मानक प्रतिनिधित्व है, तो इसका अर्थ इस प्रकार किया जाएगा (यानी "8" 8 के रूप में व्याख्या किया जाएगा, जबकि "08" को "08" के रूप में व्याख्या किया जाएगा)। कुंजी में फ़्लोट पूर्णांक के लिए छोटा कर दिया जाता है। अनुक्रमित और सहयोगी सरणी प्रकार PHP में एक ही प्रकार के होते हैं, जिसमें दोनों पूर्णांक और स्ट्रिंग इंडेक्स हो सकते हैं।

के बाद से एक नाव हमेशा एक पूर्णांक के रूप में काट होगा (जैसे 3.3 हमेशा 3 के रूप में सरणी से व्याख्या की जाएगी) मुझे आश्चर्य है अगर आपके सरणी एक स्ट्रिंग एक नाव नहीं उम्मीद कर रही है । क्या आपने $ सरणी [3.3] के बजाय $ array ["3.3"] की कोशिश की है?

+2

"" 8 "8 के रूप में व्याख्या की जाएगी।"यह ध्यान देने योग्य है कि प्लेटफॉर्म पर जहां INT 32 बिट्स का उपयोग करता है, जब स्ट्रिंग एक पूर्णांक के मानक प्रतिनिधित्व में होती है जिसे 32 बिट्स (उदाहरण के लिए" 3206519370 ") की आवश्यकता होती है, तो यह स्ट्रिंग कुंजी के रूप में रहेगी और इसे परिवर्तित नहीं किया जाएगा int (जिसके परिणामस्वरूप अतिप्रवाह होगा)। – JohnM2

0

तैरता और कुंजी में संख्यात्मक स्ट्रिंगपूर्णांक तक छोटा कर दिया जाता है।

तो उत्पादन के लिए इस कोड:

$array = [1 => "a", "1" => "b", 1.5 => "c", true => "d"]; 
print_r($array); 

होगा:

Array 
(
    [1] => d 
)