$array = explode('/', $_SERVER['REQUEST_URI']);
$count = count($array);
extract($array, EXTR_PREFIX_ALL, 'var');
可以自动生成变量(使用提取函数创建)吗?在error_reporting(E_ALL)时避免“通知:未定义的变量:”错误;已启用。
谢谢
我尝试过做这种事情,仍然需要isset(),代码中接下来使用变量(当启用error_reporting(E_ALL);时)。
if(isset($var_0))
{
$var_0 = filter_var($var_0, FILTER_SANITIZE_STRING);
}
if(isset($var_1))
{
$var_1 = filter_var($var_1, FILTER_SANITIZE_STRING);
}
if(isset($var_2))
{
$var_2 = filter_var($var_2, FILTER_SANITIZE_STRING);
}
if(isset($var_3))
{
$var_3 = filter_var($var_3, FILTER_SANITIZE_STRING);
}
==========================
或者,尝试一行if条件,
$var_0 = isset($var_0) ? filter_var($var_0, FILTER_SANITIZE_STRING) : '';
$var_1 = isset($var_1) ? filter_var($var_1, FILTER_SANITIZE_STRING) : '';
$var_2 = isset($var_2) ? filter_var($var_2, FILTER_SANITIZE_STRING) : '';
$var_3 = isset($var_3) ? filter_var($var_3, FILTER_SANITIZE_STRING) : '';
虽然错误已经消退,但是,出现了一个新的问题,即,如果条件接近,变量(由提取函数创建的变量因为这一行而被激活)。
我在网站上发布了两个路由规则(两个网址)。
$pagename = "not-found.php";
//Different Routing Engine Rules follows
if ((isset($var_1)) && (($var_1 == "") || ($var_1 == "index.php"))) {
if((isset($var_2)) || (isset($var_3)) || (isset($var_4)) || (isset($var_5)) || (isset($var_6)) || (isset($var_7)))
{
$pagename = "not-found.php";
}
else
{
$pagename = "default-home.php";
}
}
if (($var_1 == "login"))
{
//echo "Login Page URL\n";
if((isset($var_2)) || (isset($var_3)) || (isset($var_4)) || (isset($var_5)) || (isset($var_6)) || (isset($var_7)))
{
$pagename = "not-found.php";
}
else
{
$pagename = "login.php";
}
}
include "code/" . $pagename;
任何帮助将不胜感激,谢谢
答案 0 :(得分:0)
如果我理解你的问题,那么,不。您仍有责任了解可用的变量并采取相应措施。您可以通过error_reporting(E_ALL & ~E_NOTICE)
为相关代码部分禁用这些通知。
修改强>
查看您更新的问题,我认为如果您能解释一下您想要实现的目标会有所帮助。就个人而言,我认为使用extract
作为一点代码气味,可能有更好的方法:)