2011-08-22 11 views
6

क्या यह संभव है कि एक चर का उपयोग किए बिना संदर्भित किया गया हो?

उदाहरण के लिए:

if ($a != 0 && a == true) { 
... 
} 

मुझे ऐसा नहीं लगता है, लेकिन कोड (नहीं मेरे द्वारा लिखित) एक त्रुटि प्रदर्शित नहीं करता है और मुझे लगता है कि यह अजीब है। मैंने कोड को अनदेखा कर दिया है और एक स्थिर नहीं है।

+5

कोशिश करें: 'error_reporting (E_ALL^​​E_STRICT); 'और php आपको बताएगा कि उसे' $ a' नहीं मिल सका और इसके बजाय तुलनात्मक रूप से' अक्षर '(जिसका अर्थ वर्ण ए) का उपयोग होगा। – Yoshi

+0

@ योशी: एक उत्तर लिखें; पी –

+0

@ टोमालक गेरेकल माइकल पहले से ही इस बिंदु को शामिल करता है और उसके पास भी एक बेहतर स्पष्टीकरण है।; पी – Yoshi

उत्तर

8

PHP में, निरंतर परिभाषित किया जा सकता है, जिसके बाद $ नहीं होगा, लेकिन एक चर के पास एक होना चाहिए। हालांकि, यह एक चर नहीं है, और एक चर के लिए एक विकल्प नहीं है। कॉन्स्टेंट का उद्देश्य एक बार परिभाषित किया जाना है और स्क्रिप्ट के पूरे जीवनकाल में नहीं बदला जाता है।

$a = "variable a" 
define('a', 'constant a'); 

echo "A string containing $a"; 
// "A string containing variable a"; 

// Can't do it with the constant 
echo "A string containing a"; 
// "A string containing a"; 

अंत में, पीएचपी एक Use of undefined constant a - assumed 'a' के लिए एक नोटिस जारी करने और एक गलती से गैर उद्धृत के रूप में यह व्याख्या कर सकते हैं:

define('a', 'some value for a'); 

साथ ही, आप एक डबल-कोटेड या हियरडॉक स्ट्रिंग के अंदर एक निरंतर का मूल्य को जोड़ नहीं कर सकते स्ट्रिंग "a"। यह देखने के लिए कि क्या हो रहा है, अपने त्रुटि लॉग में देखें। उस स्थिति में, "a" == TRUE मान्य है, क्योंकि स्ट्रिंग "a" गैर-खाली है और इसकी तुलना बूलियन TRUE से कम है।

echo a == TRUE ? 'true' : 'false'; 
// Prints true 
// PHP Notice: Use of undefined constant a - assumed 'a' 
+0

उस के शीर्ष पर, डिफ़ॉल्ट रूप से यदि PHP एक अपरिभाषित निरंतर देखता है तो यह स्ट्रिंग के मान के साथ निरंतर मान लेगा। ए के आपके उदाहरण के साथ, PHP 'ए' (एक स्ट्रिंग के रूप में) के मान के साथ स्थिर नाम के रूप में व्याख्या करेगा। यह नोटिस या कुछ कारण बनता है: इसे देखने के लिए अपनी त्रुटि रिपोर्टिंग मान बढ़ाएं। – Narcissus

+0

@ नारिसिसस धन्यवाद - जब आप अपनी टिप्पणी लिख रहे थे पहले से ही जोड़ा गया :) –

2
इस कोड के साथ

:

if ($a != 0 && a == true) { 
    ... 
} 

आप किसी भी त्रुटि प्राप्त नहीं हो रहे हैं क्योंकि आप (या किसी और) पीएचपी बताया है कि कोड के साथ किसी भी त्रुटि, चेतावनी या नोटिस की रिपोर्ट नहीं करने के लिए। आप एक उच्च स्तर के लिए रिपोर्टिंग त्रुटि सेट और आप एक नोटिस मिल जाएगा:

नोटिस: अपरिभाषित लगातार एक का प्रयोग - 'एक' में ग्रहण ...

कौन सा मतलब यह होगा कि a पढ़ा जाता है "a" के मान के साथ स्थिर के रूप में। एक यह अपने कोड नहीं है के रूप में

if ($a != 0) { 
    ... 
} 

,: यह क्या आप वास्तव में देख रहे हैं के लिए मुझे लगता है कि नहीं है:

if ($a != 0 && "a" == true) { 
    ... 
} 

दूसरे भाग "a" == true हमेशा true हो जाएगा, तो यह तो जैसे वास्तव में है केवल यह मान सकता है कि इसका मूल लेखक द्वारा इरादा नहीं था।

तो: PHP में चर हमेशा डॉलर चिह्न $ के साथ शुरू होते हैं। बाकी सब कुछ एक चर नहीं है।

1

परिभाषा के अनुसार एक चर एक $ के साथ शुरू होना चाहिए। इसके अलावा, यह एक संख्या से शुरू नहीं हो सकता है, इसलिए एक परिवर्तनीय नाम $ 1badVar अमान्य है। हालांकि, यह पत्र या अंडरस्कोर से शुरू हो सकता है।