Php सरणी कुंजी में वर्णित वर्ण?




arrays key (5)

PHP सरणी कुंजी पूर्णांक या स्ट्रिंग हो सकती है। PHP तार बाइट एरे हैं, जिसका मतलब बाइट्स के अनुक्रम हैं। अन्य प्रकार के तार नहीं हैं और PHP अन्यथा सरणी कुंजी तारों पर कोई विशेष प्रतिबंध लगाता नहीं है। दूसरे शब्दों में: जब तक यह एक स्ट्रिंग है, कुछ भी चला जाता है।

मेरे पास कुछ php सरणी कुंजी हैं जो बहुत सारे अजीब पात्रों के साथ आबादी में हैं।

क्या यह अनुमति है? क्या कोई ऐसी बाधाएं हैं जिनका मैं उपयोग नहीं कर सकता?


आप किसी भी PHP स्ट्रिंग में सामान डाल सकते हैं जिसे सरणी कुंजी के रूप में उपयोग किया जा सकता है। अनुमत वर्णों पर कोई सीमा नहीं है।

$a = array();

$x = 'long string of random garage';
echo $a[$x]; // this is ok

$x = array();
echo $a[$x]; // not ok

मुझे यह जवाब मिला कि मेरी समस्या पर अधिक जानकारी की तलाश है। मैं उन में यूटीएफ -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!

मैंने व्यक्तिगत रूप से सरणी कुंजी में असामान्य वर्णों के साथ कोई समस्या नहीं है। कानूनी क्या है और कानूनी नहीं है, यह कहने के अलावा कि कुंजी एक स्केलर होना चाहिए। आपकी सबसे अच्छी शर्त सिर्फ कोशिश करने और देखने के लिए है।


manual मुताबिक:

कुंजी या तो एक पूर्णांक या एक स्ट्रिंग हो सकता है। मूल्य किसी भी प्रकार का हो सकता है।

इसके अतिरिक्त निम्नलिखित कुंजी कास्ट होगा:

  • वैध पूर्णांक वाले स्ट्रिंग को पूर्णांक प्रकार में डाला जाएगा। जैसे कुंजी "8" वास्तव में 8 के तहत संग्रहीत किया जाएगा। दूसरी तरफ "08" नहीं डाला जाएगा, क्योंकि यह वैध दशमलव पूर्णांक नहीं है।
  • फ्लोट्स को पूर्णांक में भी डाला जाता है, जिसका अर्थ है कि आंशिक भाग छोटा कर दिया जाएगा। जैसे कुंजी 8.7 वास्तव में 8 के तहत संग्रहीत किया जाएगा।
  • बूल को पूर्णांक में भी डाला जाता है, यानी मुख्य सत्य वास्तव में 1 के तहत संग्रहीत किया जाएगा और 0 के नीचे कुंजी झूठी होगी।
  • नल खाली स्ट्रिंग पर डाला जाएगा, यानी कुंजी नल वास्तव में "" के तहत संग्रहीत किया जाएगा।
  • Arrays और वस्तुओं कुंजी के रूप में इस्तेमाल नहीं किया जा सकता है। ऐसा करने से एक चेतावनी होगी: अवैध ऑफ़सेट प्रकार।

मैनुअल again :

एक स्ट्रिंग वर्णों की श्रृंखला है, जहां एक चरित्र बाइट के समान होता है। इसका मतलब है कि PHP केवल 256-वर्ण सेट का समर्थन करता है, और इसलिए मूल यूनिकोड समर्थन प्रदान नहीं करता है। स्ट्रिंग प्रकार के विवरण देखें।

तो संक्षेप में, कोई भी स्ट्रिंग एक कुंजी हो सकती है। और एक स्ट्रिंग में कोई बाइनरी डेटा हो सकता है (2 जीबी तक)। इसलिए, एक कुंजी कोई बाइनरी डेटा हो सकती है (चूंकि एक स्ट्रिंग कोई बाइनरी डेटा हो सकती है)।

सरणी कुंजी के कुछ यादृच्छिक (वैध) दुरुपयोग:

$w = array(chr(0) => 'null byte?', chr(rand(0, 255)) => 'random byte?');
var_dump($w);




key