数组PHP中的未定义偏移量

时间:2013-11-01 13:03:16

标签: php curl

我通常使用我的在线网络服务器进行网页开发,但由于某些原因,我需要在我的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 个答案:

答案 0 :(得分:1)

请勿使用<= sizeof($array)

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

sizeof()/count()返回条目数。由于数组索引从0开始,因此您必须使用$i <= count($arr) - 1或使用$i < count($arr)

可能在生产环境中关闭了错误报告,因此您没有看到通知。

答案 1 :(得分:0)

而不是

if($images_array[$i]) {

使用它:

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

并且也使用这个:

$i< sizeof($images_array) 

$i < count($images_array)

而不是$i<=sizeof($images_array)

答案 2 :(得分:0)

<=

中删除for ($i=0;$i<=sizeof($images_array);$i++)

由于$i从0开始

答案 3 :(得分:0)

<=中的for更改为<

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

仅0 ... 4(总共5个)。

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