2013-12-16 43 views
-1

我得到這個messege當我運行下面
通知的代碼:未定義偏移量:226在C:\瓦帕\ WWW \ CBIR \的index.php上線50未定義偏移誤差在陣列的PHP

我認爲這些代碼行導致錯誤 $ reds [$ r] ++; $ greens [$ g] ++; $ blues [$ b] ++;

$reds = array(); 

    $blues = array(); 
    $greens = array(); 

    $freqr = array(); 
    $freqb = array(); 
    $freqg = array(); 

    $info = getimagesize($_FILES['image']['tmp_name']); 

    $width = $info[0]; 
    $height = $info[1]; 
    $totalpixels = $width * $height; 

    $img = imagecreatefromjpeg($_FILES['image']['tmp_name']); 
    if ($img) { 
     for ($i = 0; $i < $height; $i++) { 
     for ($j = 0; $j < $width; $j++) { 
      $rgb = imagecolorat($img, $j, $i); 
      $r = ($rgb >> 16) & 0xFF; 
      $g = ($rgb >> 8) & 0xFF; 
      $b = $rgb & 0xFF; 

      // Add counts to our histogram arrays for each color. 
      $reds[$r]++; 
      $greens[$g]++; 
      $blues[$b]++; 
     } 
    } 
+2

什麼是你的第50行? –

+0

這是我的行50 $ reds [$ r] ++; – user3054453

回答

5

您初始化的$reds空數組,但沒有限定$reds[$r](例如)。 相反的:

$reds[$r]++; 

用途:

if(!isset($reds[$r])) { 
    $reds[$r] = 0; 
} 
$reds[$r]++; 

類似的$greens$blues

另外,作爲將要使用的密鑰是從0到255,你可以先使用初始化數組:

$reds = array_fill(0, 256, 0); // instead of using: $reds = array(); 
+1

謝謝soooooo太多 它的工作 – user3054453