我想在一个函数内创建一个全局变量,但是当我试图在函数外部回显时它不会被传递。php 5在函数内部创建全局变量
function check_input($data)
{
if (preg_match("/http/i", $data)) {$GLOBALS['spam'] = 'yes';
}
check_input($data);
echo $spam;
echo $GLOBALS['spam'];
我想在一个函数内创建一个全局变量,但是当我试图在函数外部回显时它不会被传递。php 5在函数内部创建全局变量
function check_input($data)
{
if (preg_match("/http/i", $data)) {$GLOBALS['spam'] = 'yes';
}
check_input($data);
echo $spam;
echo $GLOBALS['spam'];
的正确行动方针将是return
出函数的值,而不是依赖于全局变量。
function check_input($data)
{
//Note the use of true instead of "yes".
//You can do more stuff with true/false.
if (preg_match("/http/i", $data)) { return true; }
else { return false; }
}
$is_spam = check_input($data);
echo $is_spam; //1 or 0, because that's how true and false display in echo.
与您的代码的问题是,你有语法错误:
function check_input($data)
{
if (preg_match("/http/i", $data)) { $GLOBALS['spam'] = 'yes'; } //Note the } I've added.
}
check_input($data);
echo $spam;
echo $GLOBALS['spam'];
应该做的罚款。
可以使用全球关键字此
function check_input($data)
{
global $spam;
if (preg_match("/http/i", $data)) $spam = 'yes';
}
$data = "http://www.example.com";
check_input($data);
echo $spam;
echo $GLOBALS['spam'];
但问题是,为什么你要做到这一点,一个更好的办法是通过$垃圾邮件的功能,通过引用或归还作为一个返回变量。
function check_input($data, &$spam)
{
if (preg_match("/http/i", $data)) $spam = 'yes';
}
$data = "http://www.example.com";
$spam = "no";
check_input($data, $spam);
echo $spam;
echo $GLOBALS['spam'];
或
function check_input($data)
{
return (preg_match("/http/i", $data))?'yes':'no';
}
$data = "http://www.example.com";
$spam = check_input($data);
echo $spam;
echo $GLOBALS['spam'];
1.甚至不合法的PHP 2.不,你不希望创建一个全球性的 – PeeHaa
岂不是$ _GLOBALS或$ _GLOBAL?也许不是,但它确实看起来像。 – pattyd
另外,你还没有设置$ data – pattyd