0

私は通常、Web 開発にオンライン Web サーバーを使用しますが、何らかの理由で XAMPP でローカルにテストする必要がありました。

以下のコードは、curl を介して Web サイトから画像を取得し、取得した画像の合計を表示します。

XAMPPでこのエラーが発生するのは私を困惑させるものです:

Notice: Undefined offset: 15 in C:\Web\xampp\htdocs\curl\fetch.php on line 69

ラインコード69:if($images_array[$i]) {以下です

    <?php
    $image_regex = '/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui';
    preg_match_all($image_regex, $html, $img, PREG_PATTERN_ORDER);
    $images_array = $img[1];
    ?>

    <div class="images">

    <?php
    $k=1;
    for ($i=0;$i<=sizeof($images_array);$i++) {
        if($images_array[$i]) {
            if(strstr($images_array[$i],'http')) {
            echo "<img src='".$images_array[$i]."' width='100' id='".$k."' >";
            $k++;
            } 
        }
     }
     ?>

    <input type="hidden" name="total_images" id="total_images" value="<?php echo --$k?>" />

    </div>

オンライン Web サーバーでこのコードを使用しても問題はありません。すべてのファイルを Web サーバーから XAMPP に変更せずにインポートしました。また、私のカールはチェックすることで有効になりますphpinfo()

undefined offset誰かがこのエラーの原因を指摘してくれることを願っています。

4

4 に答える 4

1

使用しないでください<= sizeof($array):

for ($i = 0; $i < sizeof($images_array); $i++) {

sizeof()/count()エントリ数を返します。配列インデックスは 0 から始まるため、 を使用するか、 を使用する必要があり$i <= count($arr) - 1ます$i < count($arr)

本番環境ではエラー報告がオフになっている可能性があるため、通知は表示されません。

于 2013-11-01T13:06:35.273 に答える
0

<=あなたforをただに変える<

sizeof($images_array)がたとえば 5の場合、$images_array[5]存在しないためです。

0 ~ 4 (合計 5) のみ。

<=for を に変更すると<、アクセスでき$images_array[5]なくなり、通知が表示されなくなります。

于 2013-11-01T13:18:25.110 に答える
0

から削除<=しますfor ($i=0;$i<=sizeof($images_array);$i++)

$iは 0 から始まるので

于 2013-11-01T13:13:48.740 に答える
0

の代わりに

if($images_array[$i]) {

これを使って:

if(isset($images_array[$i])) {

また、これを使用します:

$i< sizeof($images_array) 

また$i < count($images_array)

それ以外の$i<=sizeof($images_array)

于 2013-11-01T13:06:49.353 に答える