我怎样才能使函数看到它外面的变量

时间:2013-01-02 01:23:06

标签: php

如何在运行函数时将变量放在函数内,以便preg_match正确的信息。这是我现有的代码:

$username = "test";
function is_txt($file) {
return preg_match('/backup-[0-9]+\.[0-9]+\.[0-9]+_[0-9]{2}-[0-9]{2}-[0-9]{2}_'.$username.'.tar.gz/', $file) > 0;
}

我试图做的是从函数外部拉出$ username变量并允许在其中看到它,这样我就可以在while循环中拉出正确的匹配。虽然前面的内容空白,但如果我执行以下操作,则可以使用:

$username = "test";
function is_txt($file) {
$username = "test";
return preg_match('/backup-[0-9]+\.[0-9]+\.[0-9]+_[0-9]{2}-[0-9]{2}-[0-9]{2}_'.$username.'.tar.gz/', $file) > 0;
}

2 个答案:

答案 0 :(得分:2)

修改函数以将$username变量作为参数:

function is_txt($file, $u) {
return preg_match('/backup-[0-9]+\.[0-9]+\.[0-9]+_[0-9]{2}-[0-9]{2}-[0-9]{2}_'.$u.'.tar.gz/', $file) > 0;
}

然后称之为:

$username = "test";
is_txt($file, $username);

或者,您可以使用global关键字从该函数中显示变量。这有时很有用,但不应该在所有地方使用。有关详细信息,请参阅variable scope手册条目。

答案 1 :(得分:1)

您需要使用global导入var:

function is_txt($file) {
    global $username;
    return preg_match('/backup-[0-9]+\.[0-9]+\.[0-9]+_[0-9]{2}-[0-9]{2}-[0-9]  {2}_'.$username.'.tar.gz/', $file) > 0;
}

但是,在大多数情况下,将值作为Jonah解释的参数传递是一种更好的解决方案。