2012-02-14 125 views
0

PHP全局數組考慮下面的函數填充用繩子(問題)的數組:沒有顯示

global $questions; 
function printQuestions($lines){ 
    $count = 1; 
    foreach ($lines as $line_num => $line) { 
     if($line_num%3 == 1){ 
      echo 'Question '.$count.':'.'<br/>'.'<input type="text" value="' . $line . '" class="tcs"/>'.'<br/>'; 
      $count++; 
      $questions[] = $line; 
     } 
    } 
} 

的問題陣列被定義爲全球性,但它不是功能外部訪問。位於頁面底部下面的代碼塊沒有返回值:

<?php 
    if(isset($_POST['Submit'])){ 
     foreach($questions as $qs) 
      echo $qs; 
     } 
?> 

我知道我可以使用會話變量,但我感興趣的是關於全局變量,這個特殊的問題。任何幫助是極大的讚賞。

+3

使用全局並不是一種推薦的做法,您可以將值傳遞給函數,就像您傳遞$ lines一樣 – 2012-02-14 19:55:24

回答

8

您應該將global移到該函數中。

function printQuestions($lines){ 
    global $questions; 
    // ... 

global關鍵字帶來了全局變量到本地範圍,這樣你就可以對其進行操作。如果您在printQuestions()函數中不使用global將全局$questions變量放在該函數的範圍內,那麼$questions將是本地變量,並且將與您正在尋找的全局變量不同。

1

您可以在PHP中使用全局變量作爲$ GLOBALS [「foo」],因此在您的情況下使用$ GLOBALS [「questions」]替換$ questions,並且所有內容都應該正常工作。