PHP: получение предупреждения, если $ _GET пусто - PullRequest
1 голос
/ 11 июля 2011

Я получаю данные массива следующим образом:

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

9 голосов
/ 11 июля 2011

Вам нужно сделать это:

$tags = isset($_GET['item']['tags']) ? $_GET['item']['tags'] :'';
1 голос
/ 11 июля 2011

попробуйте это:

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

Кроме того, вы сказали в своем вопросе, что публикуете данные, но вы используете $ _GET для получения ваших переменных. Это тоже может быть проблемой.

0 голосов
/ 11 июля 2011

Что ж, если вы просто хотите отключить отображение ошибок, просто измените 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.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...