如果变量的值为空或空,则array_shift显示警告

时间:2014-12-05 13:10:55

标签: php arrays

我正在开发一个MVC项目,并且我正在获取URL值,让每个参数都使用array_shift(),文档说明了这一点:

  

返回移位的值,如果数组为空或不是,则返回 NULL   阵列。

在我的代码中,我有以下几行:

        $arrParams = isset($_GET["params"]) ? explode("/", $_GET["params"]) : "";

        $controller = array_shift($arrParams);
        $action = array_shift($arrParams);
        $params = array_shift($arrParams);

如果我访问mvc-project.local并且我没有将任何参数传递给该网址,则会显示以下消息:

  

警告:array_shift()期望参数1是数组,字符串在第12行的......中给出

问题出在哪里?

2 个答案:

答案 0 :(得分:4)

试试这个 -

    $arrParams = isset($_GET["params"]) ? explode("/", $_GET["params"]) : array();

或者

    (array) $arrParams = isset($_GET["params"]) ? explode("/", $_GET["params"]) : "";

或者

    $controller = array_shift((array)$arrParams);
    $action = array_shift((array)$arrParams);
    $params = array_shift((array)$arrParams);

答案 1 :(得分:1)

您将$arrParams默认为空字符串,这就是为什么您收到有关传递字符串的警告(请注意不是错误)。只需将其设为空数组:

$arrParams = isset($_GET["params"]) ? explode("/", $_GET["params"]) : array();

或者一个不太好的解决方案是使用@

来取消警告
$controller = @array_shift($arrParams);
$action = @array_shift($arrParams);
$params = @array_shift($arrParams);