PHP के लिए अंकन के दो शैलियों की है, तो() (सामान्य रूप में और ब्लॉक) ब्लॉक ऐसा करने के दो तरीके, PHP documentation के अनुसार हैं।
सबसे पहले, आपके पास शब्दशः नोटेशन है, जिसमें स्पष्ट रूप से if() ब्लॉक के अंत में endif;
बताते हैं। यह इस तरह दिखता है:
if(whatever):
do something
else:
do something else
endif;
if
और else
पंक्तियों के अंत में कोलन महत्वपूर्ण हैं, क्योंकि अन्यथा पीएचपी आप अन्य संकेतन (नीचे) का उपयोग कर रहे सोचता है।
दूसरे, आप घुंघराले-ब्रेसिज़ अंकन, जो सी या पर्ल शैली कोड के समान दिखता है, और इस तरह दिखता है:
if(whatever) {
do something
} else {
do something else.
}
इस शैली अंकन के साथ
, आप घुंघराले के जोड़े जाने के लिए अनुमति दी जाती है यदि आपका ब्लॉक केवल एक पंक्ति लंबा होने जा रहा है तो बंद हो जाता है। (मुझे व्यक्तिगत रूप से लगता है कि उन्हें इस तरह से छोड़ने का बुरा अभ्यास है, लेकिन बहुत से लोग इसके द्वारा कसम खाता है, और यह पूरी तरह से वैध वाक्यविन्यास है। लेकिन मैंने PHP कोड के बीच स्विच करते समय PHP को सिंगल-लाइन ब्लॉक पर उलझन में देखा है और एचटीएमएल; यही कारण है कि मैं हमेशा ब्रेसिज़ का उपयोग करना पसंद करता हूं भले ही मैं केवल एक पंक्ति लिख रहा हूं)।
आपके मामले में समस्या यह है कि आपने दो नोटेशन मिश्रित किए हैं। आप हमें शब्दशः नोटेशन की कोशिश कर रहे हैं, लेकिन लाइनों पर कोलन नहीं हैं, इसलिए PHP सोचता है कि आप ब्रेसिज़ नोटेशन का मतलब है। लेकिन चूंकि ब्रेसिज़ नोटेशन ब्रेसिज़ को याद करने की अनुमति देता है, इसलिए PHP आपके कोड को वैध वाक्यविन्यास के रूप में देख रहा है, भले ही यह आपके द्वारा नियोजित कार्य के रूप में काम नहीं करेगा।
आपका समाधान इसे साफ करना है ताकि आप निश्चित रूप से एक वाक्यविन्यास या दूसरे का उपयोग कर रहे हों। या तो मेरे उदाहरण में दिखाए गए प्रत्येक ब्लॉक की शुरुआत और अंत में ब्रेसिज़ ({
और }
}) जोड़ें, या कोलन और endif;
लाइन जोड़ें।
तो अपने कोड में इन दो उदाहरणों में से एक तरह दिखना चाहिए:
<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>
या ...
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
आशा है कि मदद करता है।
+1: मैं पठनीयता के लिए यह वाक्यविन्यास पसंद करता हूं। HTML में सशर्त करने के लिए 'end *'/':' विधियों का उपयोग करने के लिए – RedFilter
+1। – RobertPitt
ईर्क। मुझे "एंडिफ" वाक्यविन्यास से नफरत है। मुझे किसी भी दिन अच्छा दोस्ताना घुंघराले ब्रेसिज़ दें। ;) – Spudley