我不断收到此警告我想避免在未定义时收到此警告而不关闭警告
这是上下文
$url_items = array("foo");
$article_id = db_escape($url_items[1]);
$article = get_article($article_id);
function get_article($article_id = NULL) {.....}
我认为解决它的最简单方法是这样的:
$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 以避免未定义的偏移量警告。
您没有确切说明是哪一行导致了错误,但您应该使用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
}
}
所以毕竟这很简单,是的,也许我可以更好地表达我的问题,但仍然困扰着我,没有更简单的方法可以做到这一点
if (isset($url_items[1])){
$article_id = db_escape($url_items[1]);
}else{
$article_id = null;
}
$article = get_article($article_id);
我认为这将是一个更好的方法,也许有更好的方法,但我认为只是隐藏警告是错误的方法......
$article_id = db_escape($url_items[1]);
if(empty($article_id)){
$article_id = null;
}
编辑更正了代码
我不知道这是否与错误有关,但您应该知道PHP索引以0开头的数组,所以第二行应该是
$article_id = db_escape($url_items[0]);
此外,这可能是一个错字,但第一行应该是
var $url_items = array("foo");