2012-11-09 16 views
12

संभव डुप्लिकेट में शामिल हैं:
Undefined variable problem with PHP functionPHP में अपरिभाषित चर त्रुटि फ़ाइल

कोई मुझे बता सकते हैं कि मैं क्यों अपरिभाषित चर त्रुटि संदेश मेरे PHP में फ़ाइलों को शामिल होते जा रहे हैं?

<?php 

$page = 1; 

if (isset($_REQUEST['page'])) { 
    $page = $_REQUEST['page']; 
} 

function phpRocks() { 
    require("includes/dostuff.php"); 
} 

if ($search) { 
    phpRocks(); 
} 

?> 
dostuff.php में

तब: /dostuff.php में पेज:


सूचना: अपरिभाषित चर

<?php echo $page; ?> 

यह त्रुटि मैं हो रही है लाइन

मतदाताओं/करीबी अनुरोधकर्ताओं को नीचे डालें: कोई शोध प्रयास नहीं दिखाता है? ऐसा कैसे? मुझे और क्या जोड़ा जाना चाहिए? मैं इस पर आधे घंटे तक फंस गया हूं और इस प्रश्न का उत्तर देने वाली कोई अन्य पोस्ट नहीं मिल पा रही है। प्रश्न पोस्ट करने के लिए मुझे एक PHP विशेषज्ञ होने की आवश्यकता है (इसलिए मैं कोई प्रश्न पोस्ट नहीं करूँगा!) ??

+2

चर गुंजाइश। आप वैश्विक दायरे में घोषणा कर रहे हैं, लेकिन अपने स्थानीय वैर स्कोप के साथ एक समारोह से टेम्पलेट खोलें। – mario

+0

क्या आप निश्चित हैं कि '$ पृष्ठ' सेट हो रहा है? – sgroves

+1

'phpRocks()' कहां कहा जाता है? –

उत्तर

9

मारियो की समझ में आ गया वैश्विक वर जोड़ें। ऐसा करें:

function phpRocks() { 
    global $page; 

    require("includes/dostuff.php"); 
} 
+2

यही वही था जो मुझे चाहिए था। धन्यवाद! – Zoolander

+0

स्कोप जूलैंडर पर पढ़ें, यह आपकी समस्या है – zomboble

2

आप ढंग से काम में जैसे कि

function phpRocks() { 
    global $page; 
    require("includes/dostuff.php"); 
} 
7

आप फ़ंक्शन के अंदर फ़ाइल को शामिल कर रहे हैं। इसलिए सभी शामिल कोड का दायरा कार्य का दायरा है। परिवर्तनीय $page फ़ंक्शन के अंदर मौजूद नहीं है। में इसे पारित:

function phpRocks($page) { 
    require "includes/dostuff.php"; 
} 

phpRocks($page); 
+5

मैं वैश्विक ग्लैग स्पेगेटी के बजाय इंजेक्शन के लिए यहां क्यों रुक रहा हूं? – deceze

+1

हर किसी ने आसान प्रतिष्ठा के लिए उत्तर फार्म में मारियो की टिप्पणी डाली। आप अकेले हैं जो वास्तव में कुछ प्रासंगिक जोड़ते हैं। –

+0

मुझे यकीन नहीं है कि यह सबसे अच्छा समाधान है हालांकि। '$ पृष्ठ' _should_ यहां वैश्विक चर हो सकता है आईएमओ ... यह एक वैश्विक चरम में बनाया गया एक चर है जिसमें एक फ़ाइल शामिल करने की आवश्यकता है। फ़ंक्शन कॉल के साथ ऐसा करने के लिए कुछ भी नहीं है। इसके अलावा वह भविष्य में फंक्शन में "असली" तर्कों को पारित करना चाहता है, जिसका उपयोग 'dostuff.php' के बाहर किया जा सकता है। यह दोनों के बीच भ्रम से बचाता है। – sgroves

1

आप इस तरह वैश्विक चर घोषित करने के लिए है:

function phpRocks() { 
global $page;   //set variable to global 
require("includes/dostuff.php"); 
} 
संबंधित मुद्दे