我正在开发一个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行的......中给出
问题出在哪里?
答案 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);