我使用下面的代码来测试全局变量。似乎无法在函数内部比较全局变量。
为什么输出中没有显示'hello world'?
以下是我正在尝试的代码:
<?php
$bool = 1;
function boo() {
if ($bool == 1) {
$bool = 2;
echo 'Hello World';
}
}
?>
当我删除function boo()
时,会显示“hello world”。为何在功能存在时不显示?
答案 0 :(得分:6)
使用global $var
访问您的变量
<?php
$bool = 1;
function boo() {
global $bool;
if ($bool == 1) {
$bool = 2;
echo 'Hello World';
}
}
boo();
?>
使用指针的更安全的方法是
function boo(&$bool) {
if ($bool == 1) {
$bool = 2;
echo 'Hello World';
}
}
答案 1 :(得分:5)
看起来像家庭作业,仍然:
<?php
$bool = 1;
boo();
function boo() {
global $bool;
if ($bool == 1) {
$bool = 2;
echo 'Hello World';
}
}
?>
或者
<?php
$bool = 1;
boo(&$bool);
function boo(&$bool) {
if ($bool == 1) {
$bool = 2;
echo 'Hello World';
}
}
?>
答案 2 :(得分:2)
调用您的函数,并将$bool
作为参数传递并返回值。
$bool = 1;
$bool = boo($bool);
function boo($bool) {
if ($bool == 1) {
$bool = 2;
echo 'Hello World';
}
return $bool;
}
答案 3 :(得分:0)
使用这种方式
$bool = 1;
function boo($bool) {
if ($bool == 1) {
$bool = 2;
echo 'Hello World';
}
}
boo($bool);