php Notice:未定義のオフセット:実際には発生しないはずの0

However it does print it for me. So it does return correctly but places the error at the preg_match('%">(.+?)

%s', $resultsDescription[$i][0], $resultsDescriptionFinal[$i]);. What might be wrong here?

$resultsCount = sizeof($results[0]);
    if($resultsCount > 5)
    {
        $resultsCount = 5;
    }
    $resultsCountForLoop = ($resultsCount - 1);


    for ( $i = 0; $i <= $resultsCountForLoop; $i++ ) {
        preg_match('%title="(.+?)\"%s', $results[0][$i], $resultsTitle[$i]);
        preg_match('%href="(.+?)"%s', $results[0][$i], $resultsLink[$i]);
        preg_match('%(.+?)<\/p>%s', $resultsDescription[$i][0], $resultsDescriptionFinal[$i]);
        }

    //print_r($resultsLink[$i]);
    //echo $i;
    }

    print_r($resultsLink[0]);
    print_r($resultsImage[0]);
    print_r($resultsTitle[0]);
    print_r($resultsDescriptionFinal[0];




    and the error that I get is <table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5">( ! ) Notice: Undefined offset: 0 in C:\wamp\www\library\s\results.php on line 27</th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0063</td><td bgcolor='#eeeeec' align='right'>690024</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\library\s\results.php' bgcolor='#eeeeec'>..\results.php:0</td></tr>
    </table>
0
var_dump($ results)と完全なエラーメッセージを表示してください。そうでない場合、何が起こっているのかを知るのは難しいです。
追加された 著者 deceze,
Fyi、 $ resultsCountForLoop =($ resultsCount - 1); は非常に醜いです。ループ状態で $ i <$ resultsCount を使用してみませんか?
追加された 著者 ThiefMaster,
最後に、PHPオペレータが、デフォルトのエラーハンドラで表示される(わかりやすく重要でない)通知を表示させることもあります。しかし、私たちは長い時間をかけて教えたり、謝罪したりすることは許されません。 そうではありません。
追加された 著者 mario,
質問を編集してください。すべての関連情報をコメントとして追加しないでください。 (そしてコメントを削除します)。また、実際の通知/エラーメッセージや、 var_dump($ resultsDescription)も表示されませんでした。あなたの問題は初期化されていないサブアレイです。以上です。
追加された 著者 mario,
var_dump($ resultsDescription)も便利です
追加された 著者 maialithar,
ダンプは長すぎますが、あなたの権利です!それらのすべてが説明と一緒に戻っているわけではなく、問題です。 $ resultsDescriptionFinal [0]ではなく、$ resultsDescriptionFinal [2]にあります。これを修正する方法はありますか?私はif(isset($ resultsDescription [$ i]))行がそれを処理していると思っていました。私の質問はひどいです。
追加された 著者 user1065035,
OK!申し訳ありません、これは私が質問を投稿した最初です、私は通常それらを読んでいます!病気はvar_dump($ resultsDescription)!
追加された 著者 user1065035,
アダム・スミスによる国の富は、我々が今や経済学と呼ぶ社会科学の最初の真の研究と考えられています...

[1] => _289186 ">アダム・スミスの豊かな国家は、現在我々が経済学と呼ぶ社会科学の最初の真の研究と考えられている...)
追加された 著者 user1065035,
私は結果の説明が次のものを返すと言うべきだと思います
追加された 著者 user1065035,
私は醜い部分を笑っていたhahhaha
追加された 著者 user1065035,
hahahahahhahahahaha私は$ i <($ resultsCount - 1)を使用することができると思いますが、それは1つ以上の値を必要とし、最後にオフセットエラーがスローされます!
追加された 著者 user1065035,
イテレータはゼロに設定されているので、$ resultsDescriptionFinal [0];をエコーし​​ます。ループを同じにする必要があります。私が間違っている? iveは絶え間なく探していました!あなたが助けることを願って!
追加された 著者 user1065035,
しかしそれはできません。 forループの後にpreg_match( '%'>(。+?)<%s '、$ resultsDescription [0] [0]、$ resultsDescriptionFinal [0])をエコーし​​ます。エラーは定義されていませんオフセット0
追加された 著者 user1065035,
preg_match( '%'>(。+?)<\/p>%s '、$ resultsDescription [$ i] [0]、$ resultsDescriptionFinal [$ i]);
追加された 著者 user1065035,
次の行にエラーがスローされます
追加された 著者 user1065035,
エラーは、画像と同じランディングページにある説明のhrefを取得した後で、書籍のタイトルの結果ごとにfile_get_contentsを実行してから、説明を取得するためにpreg matchを実行したときに発生します。エラーが発生した箇所
追加された 著者 user1065035,
返信をしてくれてありがとうございます。それはエラーメッセージ全体ですが、結果をダンプするのは本当に大きな本ですが、カバーイメージと説明は2つの異なるページにあります。
追加された 著者 user1065035,

1 答え

    preg_match('%">(.+?)<\/p>%s', $resultsDescription[$i][0], $resultsDescriptionFinal[$i]);

この通知は、明らかに $ resultsDescription [$ i] [0] または空の $ resultsDescriptionFinal [$ i]

あなたのコードを次のように再フォーマットして、決定的なポインタを得る:

    preg_match(
         '%">(.+?)<\/p>%s',
         $resultsDescription[$i][0],
         $resultsDescriptionFinal[$i]
    );

そして、欠けているvarsを初期化するか、あらかじめそれらを調べるか、あまり目立たない配列のネストを使い始める。 preg_match の2番目のパラメータでは、単純な汎用 $ matches 変数を指定することが非常に慣例です。
次に、その結​​果(もしあれば)をネストした配列後でに割り当てることができます:

    preg_match('%">(.+?)<\/p>%s', $match, $src);
    $resultsDescription[$i][0] = $match;

同様に、 $ src テキストが実際に利用可能かどうかを確認するために、 isset($ resultsDescriptionFinal [$ i])を使用することもできます。

1
追加された
さて、もう一度トーンに感謝!答えは$ resultsDescription [$ i]が設定されているので(isset($ resultsDescription [$ i] [0])、それに何も含まれていないかどうかをチェックすることです!手掛かり!ありがとう!
追加された 著者 user1065035,
ゲーズはトーンをありがとう!!!!ありがとうありがとう!私の方法で私はイム!と幸せな感謝!!!!
追加された 著者 user1065035,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com