2011-09-07 15 views
7

PHP के दायरे से संबंधित एक छोटी सी समस्या का उपयोग कर, मैं लूप के बाहर परिवर्तनीय $ रिपोर्ट को कॉल नहीं कर सकता। मैंने return सहित विभिन्न चीजों की कोशिश की है। यह काम नहीं करता है, यहां काम करने वाले केवल दो कार्य हैं यदि मैं echo लूप के अंदर परिवर्तनीय $report, या यदि मैं print करता हूं। जो मैं नहीं करना चाहता, हालांकि यह समस्या हल करता है, लेकिन मैं उपयोगकर्ता की स्क्रीन पर यादृच्छिक gibberish नहीं चाहता।जबकि लूप (स्कोप)

मैं पिछले 15 या इतने मिनट के लिए देख रहा हूं, और मैंने यहां इस तरह की कोई समस्या नहीं देखी है।

किसी भी मदद की सराहना की जाएगी।

<? 
require "functions2.php"; 
require "members.php"; 
$query = "SELECT MAX(DOCid) as prevDOCid from reports"; 
$result = mysql_query($query); 

while ($row = mysql_fetch_array($result)) { 
    $prevDOCid = $row[prevDOCid]; 

$thisDOCid = $prevDOCid+1; 
$report = "a"."b".$thisDOCid; 


} 
echo $report; 
?> 
+0

अगर आप गूंज आईएनजी $ रिपोर्ट कर रहे हैं अंदर जबकि पाश, आप किसी भी सेशन मिलता है? – mithunsatheesh

+2

PHP में वास्तव में दायरे की अवधारणा नहीं है, कहें, जावा, जहां यह एक समस्या होगी। यदि 'echo' कथन पर पहुंचने के समय' $ रिपोर्ट' घोषित नहीं किया गया है, तो मुझे लगता है कि PHP पहले स्थान पर 'while' loop में प्रवेश नहीं करता है। – NullUserException

+0

हम्म, अच्छा यह काम नहीं कर रहा है। मैं स्पष्ट रूप से $ रिपोर्ट को प्रतिबिंबित करने की कोशिश नहीं कर रहा हूं, मैं सिर्फ सादगी के लिए इस तरह कोड पोस्ट कर रहा हूं। लूप के बाहर चर का उपयोग करने का एकमात्र तरीका यह है कि अगर मैं इसे पहले गूंजता हूं। –

उत्तर

10

आप लूप से पहले चर को परिभाषित करने का प्रयास कर सकते हैं, उदा।

$report = ""; 
while ($row = mysql_fetch_array($result)) { 
    $report .= "a"."b".$row["prevDOCid"]+1; 
} 
echo $report; 

मुझे उम्मीद है कि यह आपकी मदद करेगा!

संपादित करें का प्रयोग करें। = नहीं + =

+0

हाँ ने पूरी तरह से समस्या हल की। मुझे लगता है कि चर लूप में नए मान ले सकते हैं, और उन्हें इसके बाहर बनाए रख सकते हैं, लेकिन इन्हें इसके अंदर परिभाषित नहीं किया जा सकता है। आपका बहुत बहुत धन्यवाद! –

+4

@RVward आप गलत हैं। वे * लूप में घोषित किया जा सकता है और इसके बाहर इस्तेमाल किया जा सकता है। यहां [सबूत] है (http://codepad.org/508BRBCi)। अंतर यह है कि यह लूप के प्रत्येक पुनरावृत्ति के साथ इसे ओवरराइट करने के बजाय '$ रिपोर्ट' के लिए नए मानों को जोड़ता है। – NullUserException

+0

@NullUserException कि कोड वहां काम करता है, लेकिन जब भी मैं $ prevDOCid को प्रतिबिंबित करने का प्रयास करता हूं, यह अपरिभाषित चर को छोड़कर कुछ भी नहीं करता है। सुनिश्चित नहीं है कि आप मुझे क्या करना चाहते हैं, समस्या का समाधान करने वाली एकमात्र चीज यह उत्तर थी। –

संबंधित मुद्दे