私はこれを警告として受け取り続けます警告をオフにせずに未定義のときにこの警告を受け取らないようにしたい
ここにコンテキストがあります
$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
ただし、がない場合にまったく実行したくない場合は、中間の三元部分をnullに簡単に変更できます$article_id
。
編集:article_id 0がある場合は
、未定義のオフセット警告を回避するためempty
に編集2:変更に変更することをお勧めします。!isset
エラーの原因となっている行を正確に言うことはできませんが、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
また、メソッドが未定義の変数で何かを実行している場合は、メソッドの内容も確認する必要があります。
この問題を回避するもう1つの方法は、次を使用して参照によって変数を関数に渡すことです&
。
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で始まる配列にインデックスを付けるため、2行目は次のようになります。
$article_id = db_escape($url_items[0]);
また、おそらくタイプミスですが、最初の行は
var $url_items = array("foo");