इस बारे में एक और सवाल है कि क्यों 'कैसे करें', फिर भी यह कुछ दिनों से मुझे परेशान कर रहा है। वर्तमान में मैं कोडइग्निटर के साथ कुछ काम कर रहा हूं और रूबी से अस्थायी रूप से PHP पर वापस जा रहा हूं, मुझे निम्न स्कोपिंग जादू के बारे में बताता है।PHP, एक विषम चरणीय दायरा?
<?php $query = $this->db->get('articles', 2);
if ($query->num_rows() > 0)
{
foreach ($query->result_array() as $row)
{
$data[] = $row; # <-- first appearance here
}
return $data; # <--- :S what?!
}
आप देख सकते हैं, मैं नहीं बिल्कुल एक PHP गुरु, फिर भी स्थानीय गुंजाइश कीड़े मुझे का विचार है कि foreach पाश के बाहर चर 'उपलब्ध' है हूँ। तो मैं इस एक दृश्य के अंदर बाहर करने की कोशिश की:
<?php
if($a==1)
{
$b = 2;
}
echo $b;
?>
कौन सा एक त्रुटि संदेश में परिणाम:
Message: Undefined variable: b
पीएचपी मैनुअल स्थानीय scoping के बारे में बताता है, फिर भी मैं अभी भी सोच रहा हूँ कि ऐसा क्यों होता है और अगर वहाँ ऐसे विशेष नियम हैं जिन्हें मैं नहीं जानता हूं। और यह मुझे डराता :)
विचार साझा करने के लिए धन्यवाद,
आप अपने दूसरे उदाहरण में वैरिएबल बनाते हैं, केवल $ 1 है 1. चूंकि $ कोई मौजूद नहीं है (PHP वास्तव में यहां एक त्रुटि उठाता है), $ b नहीं बनाया जाएगा। पहले उदाहरण में, सभी शर्तों को पूरा कर लिया गया है ताकि $ डेटा बनाया जा सके और वापसी मूल्य के रूप में उपयोग किया जा सके। –
दूसरा उदाहरण अधिक स्पष्टीकरण/oversimplification है कि घुंघराले ब्रेसिज़ के बाहर $ बी सुलभ है - जैसा कि अन्य उत्तरों बताते हैं, घुंघराले ब्रेसिज़ चर के दायरे को परिभाषित नहीं करते हैं। और वह, मुझे नहीं पता था :) – Shyam
मुझे लगता है कि यह पुराना है, या शायद कठोरता का मामला। आपका दूसरा उदाहरण मेरे लिए और प्रिंट 2 के लिए काम करता है। मैं 5.4.16 के साथ काम कर रहा हूं STRICT – Dennis