-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ただし、がない場合にまったく実行したくない場合は、中間の三元部分をnullに簡単に変更できます$article_id

編集:article_id 0がある場合は 、未定義のオフセット警告を回避するためemptyに編集2:変更に変更することをお勧めします。!isset

于 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また、メソッドが未定義の変数で何かを実行している場合は、メソッドの内容も確認する必要があります。


この問題を回避するもう1つの方法は、次を使用して参照によって変数を関数に渡すことです&

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

これをコードの前に置きます:

error_reporting(E_ALL ^ E_NOTICE);

PHPマニュアル:error_reporting

于 2010-03-23T14:20:36.787 に答える
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 に答える
-1

これはもっと良い方法だと思いますが、もっと良い方法があるかもしれませんが、警告を隠すだけでは間違った方法だと思います...

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

編集してコードを修正しました

于 2010-03-23T14:25:52.770 に答える
-1

これがエラーに関連しているかどうかはわかりませんが、PHPは0で始まる配列にインデックスを付けるため、2行目は次のようになります。

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

また、おそらくタイプミスですが、最初の行は

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