Men*_*ead 3 php variables function undefined
我是一个PHP新手,所以我有一个小问题的功能.我有这行代码:
<?php
$ime=$_POST["ime"];
$prezime=$_POST["prezime"];
$pera="string";
if (empty($ime)||empty($prezime)){
echo "Ne radi, vrati se nazad i unesi nesto!";
}
function provera($prom){
if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
echo "Nepravilan unos imena ili prezimina!";
echo $pera;
}
}
provera($ime);
provera($prezime);
?>
Run Code Online (Sandbox Code Playgroud)
无论如何,当我尝试这段代码时,我总是收到一条错误消息,说第11行(代码的粗体部分)有错误,并且没有回显变量.我猜它给了我那个错误,因为我的变量没有在该函数内部定义,但我需要在函数之外定义它,所以有没有办法做到这一点?
Joh*_*ker 13
这是因为您在$pera函数内部使用变量(仅存在于全局范围内).
你可以通过添加global $pera;你的函数来解决这个问题,虽然这不是一个特别优雅的方法,因为全局变量因为太详细的原因而被避开.因此,最好接受$pera如下函数作为函数的参数:
function provera($prom, $pera){
if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
echo "Nepravilan unos imena ili prezimina!";
echo $pera;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您的 PHP 版本是 5.3 或更高版本,则可以应用闭包。
Closures may also inherit variables from the parent scope.
use是实现闭包的php语法。
参考:匿名函数
<?php
// $ime=$_POST["ime"];
// $prezime=$_POST["prezime"];
$pera="string";
$prezime = "Ne radi, vrati se nazad i unesi nesto!";
// if (empty($ime)||empty($prezime)){
// echo "Ne radi, vrati se nazad i unesi nesto!";
// }
$provera = function ($prom) use ($pera) {
if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){
echo "Nepravilan unos imena ili prezimina!";
echo $pera;
}
};
// $provera($ime);
$provera($prezime);
Run Code Online (Sandbox Code Playgroud)