2011-01-20 22 views
5

साथ अजीब तरीके से व्यवहार मैं महीनोंphp सरणी कुंजी मान 07 और 08

$months[01] = 'January'; 
$months[02] = 'February'; 
$months[03] = 'March'; 
$months[04] = 'April'; 
$months[05] = 'May'; 
$months[06] = 'June'; 
$months[07] = 'July'; 
$months[08] = 'August'; 
$months[09] = 'September'; 
$months[10] = 'October'; 
$months[11] = 'November'; 
$months[12] = 'December'; 

के लिए एक सरणी है अब सरणी के लिए महत्वपूर्ण 07 & 08 नहीं उत्पादन सही मान करता है।

print_r($months) करने का प्रयास करें आपको August और September के लिए शून्य कुंजी सूचकांक प्राप्त नहीं होगा।

हालांकि मैं अग्रणी शून्य को हटाकर समस्या को हल करने में सक्षम हूं, फिर भी मुझे इसका कारण जानना अच्छा लगेगा।

यहां तक ​​कि PHP संपादक कुछ समस्याएं फैलता है लेकिन यह बताने में असमर्थ है कि समस्या क्या है।

धन्यवाद

उत्तर

9

से पहले एक नंबर का मतलब पीएचपी उसी तरह prepending 0x का कारण बनता है कि यह एक हेक्साडेसिमल मान के रूप में पार्स किया जा सकता में एक अष्टाधारी मूल्य के रूप में यह पार्स 0 prepending। शून्य निकालें, और यह ठीक काम करेगा।

echo 07; // prints 7 
echo 010; // prints 8 

यह ज्यादातर प्रयोग किया जाता है जब यूनिक्स अनुमतियों को निर्दिष्ट:

chmod("myfile", 0660); 

के लिए यह शायद ही कभी कुछ है कि आप क्या करना चाहते चाहते हैं कि सिवाय।

यह PHP Manual में वर्णित है।

+0

Thanx, यह चीजों को बताता है। –

2

आम तौर पर, एक नंबर पर एक अग्रणी 0 डालने से संकलक बताता है कि आपने एक ऑक्टल नंबर दिया है (बेस 8, बेस 10 नहीं)।

ऑक्टल में, 8 और 9 मौजूद नहीं हैं (8 010, 9 011 है), तो आप php भ्रमित कर रहे हैं।

तुम सच में एक अग्रणी शून्य चाहते हैं, तो आप अपने अनुक्रमित

2

के लिए तार का उपयोग पीएचपी प्रमुख 0 ड्रॉप एक अग्रणी के रूप में 0 ऑक्टल अंक के साथ नंबर का इलाज, या तो होगा या उद्धरण में कुंजी मान डाल सकते हैं।

3

जिस तरह से आप integer literal बनाते हैं, वह महत्वपूर्ण है।

दशमलव अक्षरों के लिए संरचना देखें? ध्यान दें कि एक पूर्ववर्ती शून्य उस पैटर्न का हिस्सा नहीं है?

या तो आप तार

$months['01'] = 'January'; 
$months['02'] = 'February'; 
// etc... 
0

मैं सिर्फ डिबगिंग और मेज सिर की पिटाई की कीमती मिनट के बाद यह महसूस किया के रूप में शून्य अपने सरणी कुंजी निकालें, या इलाज के लिए की है।
समस्या यह है कि PHP अंडाकार शाब्दिक पूर्णांक को खराब करने के बारे में कोई त्रुटि या चेतावनी नहीं उठाता है। यह केवल शाब्दिक के अंत तक त्रुटि से भाग को अनदेखा करता है।
डॉन।

पीएस: ऑक्टल संख्याओं का उपयोग कौन करता है? कभी नहीं किया, किसी अच्छे कारण के लिए किसी का उपयोग करने के बारे में कभी नहीं सुना।
हेक्साडेसिमल महान है, लेकिन ऑक्टल? अरे नहीं।
अनुमति के लिए भी मैं आमतौर पर chmod ugo+rwx अधिक सरल है।

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