数组php中未定义的偏移量错误

时间:2013-12-16 08:16:09

标签: php arrays

当我运行下面的代码时,我得到了这个消息 注意:未定义的偏移量:第50行的C:\ wamp \ www \ cbir \ index.php中的226

我认为这些代码行会导致错误          $红色[$ R] ++;          $果岭[$克] ++;          $蓝调[$ 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]++;
        }
    }

1 个答案:

答案 0 :(得分: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();