मेरे पास कुछ php एरे कीज़ हैं जो बहुत सारे अजीब चरित्रों से आबाद हैं।
क्या यह अनुमति है? क्या मेरे उपयोग के लिए कोई बाधाएं हैं?
मेरे पास कुछ php एरे कीज़ हैं जो बहुत सारे अजीब चरित्रों से आबाद हैं।
क्या यह अनुमति है? क्या मेरे उपयोग के लिए कोई बाधाएं हैं?
जवाबों:
मैनुअल के अनुसार :
कुंजी या तो पूर्णांक या एक स्ट्रिंग हो सकती है। मान किसी भी प्रकार का हो सकता है।
इसके अतिरिक्त निम्नलिखित प्रमुख जातियाँ होंगी:
- मान्य पूर्णांक वाले स्ट्रिंग्स को पूर्णांक प्रकार में डाला जाएगा। उदाहरण के लिए कुंजी "8" वास्तव में 8 के तहत संग्रहीत किया जाएगा। दूसरी तरफ "08" को कास्ट नहीं किया जाएगा, क्योंकि यह एक वैध दशमलव पूर्णांक नहीं है।
- फ़्लोटर्स को पूर्णांक में भी डाला जाता है, जिसका अर्थ है कि आंशिक भाग को काट दिया जाएगा। उदाहरण के लिए 8.7 कुंजी वास्तव में 8 के तहत संग्रहीत किया जाएगा।
- बूलर्स को पूर्णांकों में डाला जाता है, अर्थात, कुंजी सच वास्तव में 1 के तहत संग्रहीत की जाएगी और 0 के तहत कुंजी झूठी होगी।
- नल को रिक्त स्ट्रिंग में डाला जाएगा, अर्थात कुंजी नल वास्तव में "" के तहत संग्रहीत किया जाएगा।
- एरे और ऑब्जेक्ट्स को चाबियों के रूप में इस्तेमाल नहीं किया जा सकता है। ऐसा करने से चेतावनी मिलेगी: अवैध ऑफसेट प्रकार।
मैनुअल फिर से :
एक स्ट्रिंग पात्रों की श्रृंखला है, जहां एक चरित्र बाइट के समान होता है। इसका मतलब है कि PHP केवल 256-वर्ण सेट का समर्थन करता है, और इसलिए मूल यूनिकोड समर्थन प्रदान नहीं करता है। स्ट्रिंग प्रकार का विवरण देखें।
तो संक्षेप में, कोई भी स्ट्रिंग एक कुंजी हो सकती है। और एक स्ट्रिंग में कोई भी बाइनरी डेटा (2GB तक) हो सकता है। इसलिए, एक कुंजी किसी भी बाइनरी डेटा हो सकती है (चूंकि एक स्ट्रिंग किसी भी बाइनरी डेटा हो सकती है)।
सरणी कुंजियों का कुछ यादृच्छिक (मान्य) दुरुपयोग:
$w = array(chr(0) => 'null byte?', chr(rand(0, 255)) => 'random byte?');
var_dump($w);
कुंजी एक स्ट्रिंग या पूर्णांक होनी चाहिए। कुछ जातियाँ होती हैं जो होती हैं, लेकिन मुझे लगता है कि मैनुअल समझाने का अच्छा काम करता है:
कुंजी या तो पूर्णांक या एक स्ट्रिंग हो सकती है। मान किसी भी प्रकार का हो सकता है।
इसके अतिरिक्त निम्नलिखित प्रमुख जातियाँ होंगी:
- मान्य पूर्णांक वाले स्ट्रिंग्स को पूर्णांक प्रकार में डाला जाएगा। उदाहरण के लिए "8" वास्तव में 8 के तहत संग्रहीत किया जाएगा। दूसरी तरफ "08" को नहीं डाला जाएगा, क्योंकि यह एक वैध दशमलव पूर्णांक नहीं है।
- फ़्लोटर्स को पूर्णांक में भी डाला जाता है, जिसका अर्थ है कि आंशिक भाग को काट दिया जाएगा। उदाहरण के लिए 8.7 कुंजी वास्तव में 8 के तहत संग्रहीत किया जाएगा।
- बूलर्स को पूर्णांकों में डाला जाता है, अर्थात, कुंजी सच वास्तव में 1 के तहत संग्रहीत की जाएगी और 0 के तहत कुंजी झूठी होगी।
- नल को रिक्त स्ट्रिंग में डाला जाएगा, अर्थात कुंजी नल वास्तव में "" के तहत संग्रहीत किया जाएगा।
- एरे और ऑब्जेक्ट्स को चाबियों के रूप में इस्तेमाल नहीं किया जा सकता है। ऐसा करने से चेतावनी मिलेगी: अवैध ऑफसेट प्रकार।
मुझे एक समस्या पर अधिक जानकारी की तलाश में यह उत्तर मिला। मैं उनमें UTF-8 वर्णों के साथ तार का उपयोग कर रहा था, जो मेरे पास एक सरणी के लिए कुंजी के रूप में काम नहीं करेगा।
कुछ इस तरह
$str = "R&D - Solution";
$arr = array( "R&D - Solution" => "Research" );
echo $arr[$str]; // did not work
मेरे लिए (बड़ा या चतुर नहीं) समाधान यही करना था ।।
$str = md5("R&D - Solution");
$arr = array( md5("R&D - Solution") => "Research" );
echo $arr[$str]; // works!
PHP सरणी कुंजियाँ पूर्णांक या तार हो सकती हैं। PHP स्ट्रिंग्स बाइट सरणियाँ हैं, जिसका अर्थ बाइट्स के अनुक्रम हैं। स्ट्रिंग्स के अन्य प्रकार नहीं हैं और PHP अन्यथा सरणी कुंजी स्ट्रिंग्स पर कोई विशेष प्रतिबंध नहीं लगाता है। दूसरे शब्दों में: जब तक यह एक स्ट्रिंग है, तब तक कुछ भी हो जाता है।
यदि जटिल चाबियाँ "अपरिभाषित सूचकांक" त्रुटि पैदा कर रही हैं, तो आपको बस "ट्रिम" समस्या हो सकती है।
मैं पागल हो रहा था क्योंकि एक जटिल कुंजी "अपरिभाषित सूचकांक" त्रुटि को थूक रही थी और मुझे लगा कि शायद यह एक वाक्यविन्यास उल्लंघन था। त्रुटि के कारण सरणी कुंजी को MySQL डेटाबेस क्वेरी से एक फ़ील्ड से बनाया गया था जिसे मैं एक कुंजी में परिवर्तित कर रहा था और एक नए सरणी में उपयोग कर रहा था। कुंजी इस तरह दिखती है: pl_1DNKoiJKwotCqAycickBVhTyऔर यहां कोड का निर्माण कैसे किया गया था।
//new array created from database query
$new_array[$dbquery['fieldname']] = {some value};
//key value found in field of second array
$keyval = $array_two['fieldname'];
//this produced the "undefined index" error
echo $new_array[$keyval];
जब वास्तव में, $keyvalऔर $dbquery['fieldname']एक पूर्ण मैच (दोनों ब्राउज़र में गूंज द्वारा नेत्रहीन सत्यापित) दिखाई दिया। इस तरह से trimदूसरे कथन का उपयोग करके रहस्य को सुलझाया गया : $keyval = trim($array_two['fieldname']);एक बार 'छंटनी' के बाद, अब शिकायत नहीं की गई।
इसकी आशा करना कुछ अन्य लोगों को कुछ निराशा भरे क्षणों से बचाता है ...
मुझे व्यक्तिगत रूप से सरणी कुंजियों में असामान्य वर्णों के साथ कोई समस्या नहीं है। क्या है और क्या कानूनी नहीं है अच्छी तरह से प्रलेखित नहीं है, यह कहने के अलावा कि कुंजी एक स्केलर होनी चाहिए। आपकी सबसे अच्छी शर्त सिर्फ इसे आज़माना और देखना है।
Php सरणी में आप कुंजी का उपयोग नहीं कर सकते हैं: 2.3 या दशमलव संख्या
ANSI "é" में php पेज को एनकोड करें (Cinéma wont show up as Cinà © ma) इस्तेमाल कर सकेंगे। नोटपैड ++ में बस मेनू एनकोड का उपयोग करें => एएनएसआई कन्वर्ट करें और सहेजें
éमौजूद नहीं है, तो क्या होगा यदि ओपी नोटपैड ++ का उपयोग नहीं करता है?
$a = (object) ['@km³' => 123]; error_log($a->@km³);