Здесь все идет не так:
if ($darkColorR[$j]==NULL||$darkColorG[$j]==NULL||$darkColorB[$j]==NULL)
В PHP вы не можете сравнивать значения с NULL с помощью $ var == NULL, вы должны использовать функцию is_null:
if (is_null($darkColorR[$j])||is_null($darkColorG[$j])||is_null($darkColorB[$j]))
Для этого нужно получить значение $ darkColorR [$ i] и проверить, имеет ли оно значение NULL. Я думаю, что в вашем случае вы пытаетесь проверить, есть ли в массиве запись для этого конкретного индекса, который является чем-то совершенно другим. Вы можете использовать функцию isset, чтобы проверить, есть ли в массиве запись с заданным индексом:
if (!isset($darkColorR[$j])||!isset($darkColorG[$j])||!isset($darkColorB[$j]))
Соединение этого дает следующий код:
<?php
// var load
$size=500;
//HTTP GET vars:
//N is the number of sections we have
//n1 is the percentage for part1
//n2 is the percentage for part2, and so on
$num=$_GET["n"];
//want to make a hard limit at 10 different sections
$num=min($num,10);
$percents;
$angles;
$angles[0]=0;
$percents[0]=NULL;
//load percents array. First value is NULL
for ($c=1;$c<=$num;$c++)
{
$percents[$c]=(int)$_GET["n".$c];
$angles[$c]=(int)round((($percents[$c-1]+$percents[$c])/100)*360);
}
$angles[$num]=360;
//create image
$half=round($size/2);
$image = imagecreatetruecolor($size, $size);
// colors
$colorR=array(0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x74, 0x33, 0xFF, 0x33, 0x66);
$colorG=array(0x00, 0x80, 0x00, 0xA5, 0xFF, 0xFF, 0x99, 0x00, 0x33, 0xFF);
$colorB=array(0xFF, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xFF, 0x66, 0x99, 0x33);
// shaded colors
$darkColorR=array(0x00, 0x00, 0x80, 0x80, 0x80, 0x3A, 0x1A, 0x80, 0x1A, 0x33);
$darkColorG=array(0x00, 0x40, 0x00, 0x52, 0x80, 0x80, 0x4C, 0x00, 0x1A, 0x80);
$darkColorB=array(0x80, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x80, 0x33, 0x4C, 0x1A);
$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$black = imagecolorallocate($image, 0x00, 0x00, 0x00);
// make the 3D effect
$tempDarkColor;
for ($i = $half+round(.1*$half); $i > $half; $i--)
{
for ($j=0;$j<(count($angles)-1)&&$angles[$j]<180;$j++)
{
if (!isset($darkColorR[$j])||!isset($darkColorG[$j])||!isset($darkColorB[$j]))
{
//if one of the colors is missing, set the entire color to white
$darkColorR[$j]=0x00;
$darkColorG[$j]=0x00;
$darkColorB[$j]=0x00;
}
$tempDarkColor[$j]= imagecolorallocate($image, $darkColorR[$j],$darkColorG[$j],$darkColorB[$j]);
imagefilledarc($image, $half, $i, $size, $half, $angles[$j], $angles[$j+1] , $tempDarkColor[$j], IMG_ARC_PIE);
}
}
//make the image
for ($k=0;$k<(count($angles)-1);$k++)
{
if (!isset($colorR[$k])||!isset($colorG[$k])||!isset($colorB[$k]))
{
//if one of the colors is missing, set the entire color to white
$colorR[$k]=0x00;
$colorG[$k]=0x00;
$colorB[$k]=0x00;
}
$tempColor[$k]= imagecolorallocate($image, $colorR[$k],$colorG[$k],$colorB[$k]);
imagefilledarc($image, $half, $half, $size, $half, $angles[$k], $angles[$k+1] , $tempColor[$k], IMG_ARC_PIE);
}
// flush image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>