-1

我不断收到此警告我想避免在未定义时收到此警告而不关闭警告

这是上下文

  $url_items = array("foo");
  $article_id = db_escape($url_items[1]);
  $article = get_article($article_id);

  function get_article($article_id = NULL) {.....}
4

6 回答 6

3

我认为解决它的最简单方法是这样的:

$url_items = array("foo");
$article = empty($url_items[1]) ? get_article() : get_article(db_escape($url_items[1]));

function get_article($article_id = NULL) {.....}

应该有效,因为您$article_id在函数中提供了默认值。但是,如果没有$article_id.

编辑:如果您有 article_id 0,您可能需要更改empty!isset
Edit 2: Modified 以避免未定义的偏移量警告。

于 2010-03-23T15:10:42.413 回答
1

您没有确切说明是哪一行导致了错误,但您应该使用isset任何您不确定是否存在的变量。例如:

$url_items = array("foo");
if ( isset($url_items[1]) )
{
    $article_id = db_escape($url_items[1]);
    $article = get_article($article_id);
}

function get_article($article_id = NULL) {.....}

您还需要检查db_escape方法的内容,以防它也在使用未定义的变量进行操作。


解决该问题的另一种方法是使用以下方法通过引用将变量传递给函数&

function get_article(&$article_id) {
    if ( $article_id == null ) {
        // handle null case here
    }
    else {
        // get the article
    }
}
于 2010-03-23T14:54:41.453 回答
0

所以毕竟这很简单,是的,也许我可以更好地表达我的问题,但仍然困扰着我,没有更简单的方法可以做到这一点

    if (isset($url_items[1])){
        $article_id = db_escape($url_items[1]);
    }else{
        $article_id = null;
    }
    $article = get_article($article_id);
于 2010-03-23T15:16:05.217 回答
0

把它放在你的代码之前:

error_reporting(E_ALL ^ E_NOTICE);

PHP 手册:error_reporting

于 2010-03-23T14:20:36.787 回答
-1

我认为这将是一个更好的方法,也许有更好的方法,但我认为只是隐藏警告是错误的方法......

$article_id = db_escape($url_items[1]);
if(empty($article_id)){
    $article_id = null;
}

编辑更正了代码

于 2010-03-23T14:25:52.770 回答
-1

我不知道这是否与错误有关,但您应该知道PHP索引以0开头的数组,所以第二行应该是

$article_id = db_escape($url_items[0]);

此外,这可能是一个错字,但第一行应该是

var $url_items = array("foo");
于 2010-03-23T14:28:58.927 回答