2012-02-14 88 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,并且所有内容都应该正常工作。