stop explode()期望参数2是字符串警告

时间:2013-12-06 05:16:36

标签: php get explode

我有一个允许用户选择2个或更多类别的表单。

php check url like:

 $categories= (!isset($_GET["categories"])?0:explode(";",$_GET["categories"]));

普通网址就像这样

    site.com/cat.php?page=&categories=1;2

如果用户将网址更改为

    site.com/cat.php?page=&categories[1]

该网站将显示

      Warning: explode() expects parameter 2 to be string, array given in...

所以我试着像这样检查$ _GET

     is_string($_GET["category"])

但没有运气

2 个答案:

答案 0 :(得分:2)

试试这个?

$catString=is_string($_GET["categories"]) ? $_GET["categories"] : implode(';',$_GET["categories"]);

$categories = (!isset($_GET["categories"])?0:explode(";",$catString));

或者我想更好的解决方案是(而不是从数组转换为字符串并返回到有点傻的数组):

$categories = (!isset($_GET["categories"])? "" : $_GET["categories"];

$categories = is_array($categories) ? $_GET["categories"] : explode(";",$catString));

答案 1 :(得分:0)

if(isset($_GET["categories"]))
{
    if(is_array($_GET["categories"]))
        $categories = implode(" ",$_GET["categories"]);
    else
        $categories = explode(";",$_GET["categories"]);
}
else
$categories='';

如果是阵列,请使用内爆爆炸功能。