使用提取函数创建的isset变量

时间:2011-10-05 04:04:23

标签: php

$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;

任何帮助将不胜感激,谢谢

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,那么,不。您仍有责任了解可用的变量并采取相应措施。您可以通过error_reporting(E_ALL & ~E_NOTICE)为相关代码部分禁用这些通知。

修改

查看您更新的问题,我认为如果您能解释一下您想要实现的目标会有所帮助。就个人而言,我认为使用extract作为一点代码气味,可能有更好的方法:)