0

我通常使用我的在线网络服务器进行网络开发,但由于某些原因,我需要在本地的 XAMPP 中对其进行测试。

我下面的代码将通过 curl 从网站获取图像,并显示获取的总图像。

让我感到困惑的是,我在 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>

我在我的在线网络服务器中使用此代码没有问题。我将所有文件从我的网络服务器导入到 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

而不是

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 回答
0

<=从_for ($i=0;$i<=sizeof($images_array);$i++)

因为$i是从0开始

于 2013-11-01T13:13:48.740 回答
0

<=for变成公正的<

因为如果sizeof($images_array)是例如 5 ,$images_array[5]将不存在。

只有 0 ... 4(总共 5 个)。

通过更改<=您的 for into <,您将阻止访问$images_array[5],从而阻止显示通知。

于 2013-11-01T13:18:25.110 回答