我一直把这个作为一个警告,我希望避免在没有关闭警告的情况下获取此警告
这是上下文
$url_items = array("foo");
$article_id = db_escape($url_items[1]);
$article = get_article($article_id);
function get_article($article_id = NULL) {.....}
答案 0 :(得分: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
,如果您根本不想执行,则可以轻松地将中间三元部分更改为null。
编辑:如果您有article_id 0,则可能需要将empty
更改为!isset
编辑2:修改以避免未定义的偏移警告。
答案 1 :(得分: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
}
}
答案 2 :(得分:0)
答案 3 :(得分:0)
所以这一切都很简单,是的,也许我可以更好地表达我的问题,但仍然困扰我,没有更简单的方法来做到这一点
if (isset($url_items[1])){
$article_id = db_escape($url_items[1]);
}else{
$article_id = null;
}
$article = get_article($article_id);
答案 4 :(得分:-1)
我认为这将是一个更好的方式,也许有更好的方法,但我认为隐藏警告是错误的方式......
$article_id = db_escape($url_items[1]);
if(empty($article_id)){
$article_id = null;
}
编辑更正了代码
答案 5 :(得分:-1)
我不知道这是否与错误有关,但你应该知道PHP索引数组从0开始,所以第二行应该是
$article_id = db_escape($url_items[0]);
此外,它可能是一个错字,但第一行应该是
var $url_items = array("foo");