2

現在、多くのphp警告を作成するコードをクリーンアップしています。私は次のコードを持っています:

if(isset($info[1])) {
        list($artist, $song) = explode(" - ", trim(strip_tags($info[1])));
        $fullname = trim(strip_tags($info[1]));
    }

したがって、このブロックを実行したいのは、インデックス1が設定されている場合だけです。しかし、スクリプトを実行すると、この行に「通知:未定義のオフセット:1in....」が表示されます。

では、配列内の指定されたインデックスに値があるかどうかを確認する正しい方法は何でしょうか?

編集:私はあなたの解決策を試しましたが、それでも私が期待するように機能していません。混乱を助長するデバッグ機能をいくつか追加しました。テスト用に次のものを追加しました。

echo "<pre>";
print_r($info);
echo "</pre>";
echo ".";
die();

結果は次のとおりです。

Array
(
   [0] => 
)
.
Played @
[1] => Song Title

今のところ、出力の解釈方法がよくわかりません...ヒントを教えてください!?

4

3 に答える 3

4

$info最初に、が本当に配列であるかどうかを確認する必要があります。

if (is_array($info) && isset($info[1])) { 
    // ...
}

または、数値キーしかない場合は、countを使用できます。

if (count($info) > 1) { 
    // ...
}

または、array_key_existsを使用することもできます:

if (array_key_exists(1, $info)) {
    // ...
}
于 2012-05-14T10:38:08.383 に答える
2

まず、それが存在することを確認する必要があるかもしれません$info

if (isset($info, $info[1]))

しかし、私の推測では、$info[1]トリミングした後は「-」の一致はなく、1つの要素のみが返されます(したがって、list()1つのインデックスがないと文句を言うでしょう)。

于 2012-05-14T10:38:17.030 に答える
0

これは次のようになります:

if( isset($info) && count($info) > 0 ) {
    if ( isset($info[1]) && !empty($info[1]) ) {
        ... your code goes here ...
    }
}

これがお役に立てば幸いです:)

于 2012-05-14T10:42:12.007 に答える