PHP:如果$ _GET为空,则会收到警告

时间:2011-07-11 06:43:55

标签: php arrays get

我得到这样的数组数据:

$tags = $_GET['item']['tags'];  

if ($tags){
    foreach ($tags as $tag){

由于标签数据是从输入字段发送的,输入字段也可以是空的。因此,如果$tags没有获得任何数据,我会收到以下通知:

Message: Undefined index: item

如何避免此通知?

如果我试试这个:

$tags = isset($_GET['item']['tags']);

然后,如果$tags没有获得任何数据,它不会显示任何警告,但如果它获得任何数据,那么我会收到以下警告:

Message: Invalid argument supplied for foreach()

如何才能这样做,以便$tags获取任何数据,然后转到foreach循环,否则不要发出通知,说明它没有得到任何数据。

感谢。

3 个答案:

答案 0 :(得分:9)

你需要这样做:

$tags = isset($_GET['item']['tags']) ? $_GET['item']['tags'] :'';

答案 1 :(得分:1)

试试这个:

if( !is_null( $_GET["item"]["tags"] ) )
{
    $tags = $_GET["item"]["tags"];
    foreach($tags as $tag)
    {
        //do stuff here
    }
}

另外,您在问题中说过要发布数据,但是使用$ _GET来检索变量。这也可能是一个问题。

答案 2 :(得分:0)

好吧,如果您只是想关闭错误显示,那么通过修改php.ini以显示错误很容易......

然后当我调试时,我使用它来确保我能看到这些错误......

$debug = 1;
if($debug){
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
}

无论何时运行foreach循环,您都需要对数组运行计数

$array = array();
if(count($array) > 0){
    foreach($array as $key=>$value){
         //Stuff here...
    }
}

在你的情况下,请将其归结为:

$tags = $_GET['item']['tags'];  

//TAGS MUST BE AN OBJECT OR AN ARRAY....

if (count($tags) > 0){
    foreach($tags as $tag){
       //....Code here.
    }
}