2013-11-01 37 views
0

我通常使用我的在線Web服務器進行Web開發,但出於某些原因,我需要在本地XAMPP中測試它。未定義的數組中的偏移量PHP

我下面的代碼將通過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> 

我一直在使用我的在線Web服務器的代碼沒有問題。我將我的所有文件從我的網絡服務器導入到XAMPP中,而無需對其進行任何更改。此外,我的捲曲是通過檢查啓用phpinfo()

我希望有人可以指出什麼使這undefined offset錯誤。

+0

檢查'var_dump($ images_array)'或'print_r($ images_array)'查看'$ images_array'裏面的內容。 –

+0

在本地服務器上使用它可能沒有任何問題。閱讀郵件,這不是一個錯誤,這是一個**通知**。只是PHP的'error_reporting'值有所不同。 – BenM

回答

1

不要使用<= sizeof($array)

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

sizeof()/count()返回條目的數量。由於數組索引從0開始,因此您必須使用$i <= count($arr) - 1或使用$i < count($arr)

錯誤報告可能在您的生產環境中被關閉,因此您沒有看到通知。

0

取而代之的

if($images_array[$i]) { 

使用本:

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

,還可以使用這樣的:

$i< sizeof($images_array) 

$i < count($images_array)

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

0

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

由於$i從0

0

變化<=開始在for逼到<

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

只有0 ... 4(共5個)。

通過將<=更改爲<,您將阻止訪問$images_array[5],從而防止顯示通知。