考虑以下用字符串(问题)填充数组的函数:
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;
}
?>
我知道我可以使用会话变量,但我对这个关于全局变量的特殊问题感兴趣。非常感谢任何帮助。
答案 0 :(得分:8)
您应该在功能中移动global
。
function printQuestions($lines){
global $questions;
// ...
global
关键字将全局变量带入本地范围,因此您可以对其进行操作。如果您未在global
函数中使用printQuestions()
将全局$questions
变量置于函数范围内,则$questions
将是本地的,并且将是不同的变量比您正在寻找的全局变量。
答案 1 :(得分:1)
你可以在PHP中使用全局变量$ GLOBALS [“foo”]所以在你的情况下,在函数中用$ GLOBALS [“questions”]替换$ questions,一切都应该有效。