我可以做到这一点:
function test1(){
$count = 1;
while($count < 8){
echo "Hello world1 <br>";
$count++;
}
}
test1();
我可以做到这一点:
while($row = mysqli_fetch_array($result)){
echo "Hello world2<br>";
}
但我无法做到这一点:
function test2(){
while($row = mysqli_fetch_array($result)){
echo "Hello world3 <br>";
}
}
test2();
echo部分是其他东西的占位符,但为什么test2函数不起作用?
答案 0 :(得分:1)
所以这可能是范围问题。尝试在while循环之前回显$row
作为单个查询。我可以想象你仍然看不到任何东西。我的猜测是test2
函数不包含没有涉及函数时的正确数据库信息。
$result
来自哪里?
该函数没有显示$result
等于
来自wiki的范围定义:
在计算机编程中,名称绑定的范围 - 名称与实体的关联(例如变量)是绑定有效的计算机程序的一部分:其中名称可用于引用实体。
换句话说,当你有一个功能时
$test = 10;
foo();
echo $test; // = 10 not 1
foo(){
$test = 1;
}
这是因为内部$test
对外部$ test一无所知。
除非将变量声明为global variable
(这是一个变量)
可以被所有功能理解)。但如果没有这样宣布,那么这个功能在某种意义上就不会对外界的“世界”产生任何影响。
您还可以将变量作为参数传入,函数应在scope
你能做的是:
function func($result, $db){
while($row = $db->mysqli_fetch_array($result)){
echo "Hello world3 <br>";
}
}
现在该函数的scope
包含$result
和$db
,因此您可以在函数中使用它们
答案 1 :(得分:1)
我唯一能想到的是在调用函数之前未定义结果变量。您也可以尝试将其作为test2函数中的参数传递。像:
function test2($result){
while($row = mysqli_fetch_array($result)){
echo "Hello world3 <br>";
}
}
test2($result);