Php 导致错误的原因是什么:“注意:未初始化的字符串偏移量”?
我的PHP程序来自:该程序假设将圆周率的数字转换为单个颜色,每个像素一个数字,并将其保存到如下图像文件: 但是,当我尝试运行PHP代码时,会出现以下运行时错误:Php 导致错误的原因是什么:“注意:未初始化的字符串偏移量”?,php,image,runtime-error,pi,Php,Image,Runtime Error,Pi,我的PHP程序来自:该程序假设将圆周率的数字转换为单个颜色,每个像素一个数字,并将其保存到如下图像文件: 但是,当我尝试运行PHP代码时,会出现以下运行时错误: Notice: Uninitialized string offset: 44000 in C:\Users\User\Documents\NetBeansProjects\ColorDivisors\index.php on line 103 Notice: Uninitialized string offset: 44001 in
Notice: Uninitialized string offset: 44000 in C:\Users\User\Documents\NetBeansProjects\ColorDivisors\index.php on line 103
Notice: Uninitialized string offset: 44001 in C:\Users\User\Documents\NetBeansProjects\ColorDivisors\index.php on line 103
Notice: Uninitialized string offset: 44002 in C:\Users\User\Documents\NetBeansProjects\ColorDivisors\index.php on line 103
Notice: Uninitialized string offset: 44003 in C:\Users\User\Documents\NetBeansProjects\ColorDivisors\index.php on line 103
Notice: Uninitialized string offset: 44004 in C:\Users\User\Documents\NetBeansProjects\ColorDivisors\index.php on line 103
这是代码
<?php
//Title:
// Pi Graphical Visualization Script
//Date:
// 03.14.07
//Author:
// Tim Habersack
//Descript:
// Reads in the digits of pi, assigns a color to each number 0-9,
// then outputs to an image with one pixel representing a number.
//Notes:
// (http://zenwerx.com/pi.php) is where I obtained the pi file,
// calculated to over 4 million decimal places. The GD library
// in your php config must be enabled for this to function.
//E-mail:
// tim@hithlonde.com
//Copyright:
// Released under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License
function NumToColor($ImagePassed, $NumPassed)
{
$the0 = imagecolorallocate($ImagePassed, 0xFF, 0xFF, 0xFF);
$the1 = imagecolorallocate($ImagePassed, 0x00, 0xFF, 0xFF);
$the2 = imagecolorallocate($ImagePassed, 0x00, 0x00, 0xFF);
$the3 = imagecolorallocate($ImagePassed, 0xFF, 0x00, 0xFF);
$the4 = imagecolorallocate($ImagePassed, 0x00, 0xFF, 0x00);
$the5 = imagecolorallocate($ImagePassed, 0xFF, 0xA5, 0x00);
$the6 = imagecolorallocate($ImagePassed, 0xFF, 0x00, 0x00);
$the7 = imagecolorallocate($ImagePassed, 0xFF, 0xFF, 0x00);
$the8 = imagecolorallocate($ImagePassed, 0x80, 0x80, 0x80);
$the9 = imagecolorallocate($ImagePassed, 0x00, 0x00, 0x00);
switch ($NumPassed)
{
case 0:
return $the0;
break;
case 1:
return $the1;
break;
case 2:
return $the2;
break;
case 3:
return $the3;
break;
case 4:
return $the4;
break;
case 5:
return $the5;
break;
case 6:
return $the6;
break;
case 7:
return $the7;
break;
case 8:
return $the8;
break;
case 9:
return $the9;
break;
}
}
//Set the size of the pi image
$x = 200;
$y = 200;
$gd = imagecreatetruecolor($x, $y);
//Connect the pi file to variable
$theTestPi = file_get_contents("pi");
$theGoodPi = "";
$PiWalker = 0;
//gets the # of digits needed, plus some extra for the \r dropped off, reads into var
while ($PiWalker < $x * $y * 1.1)
{
if ($theTestPi[$PiWalker] == "\r")
{
$PiWalker++;
}
else
{
$theGoodPi = $theGoodPi . $theTestPi[$PiWalker];
}
$PiWalker++;
}
//$PiWalker = 0;
//walks through the image, painting the pi characters pixel by pixel
for ($theY = 0; $theY < $y; $theY++)
{
for ($theX = 0; $theX < $x; $theX++)
{
/*This is line 103*/ imagesetpixel($gd, $theX, $theY, NumToColor($gd,$theGoodPi[$PiWalker]));
$PiWalker++;
}
}
header('Content-Type: image/png');
imagepng($gd);
我不知道到底是什么导致了这个错误
我使用的是xampp PHP编译器版本1.8.3-4 PHP版本5.5.11。问题似乎在第95行 此行不应注释:
//$PiWalker = 0;
换成
$PiWalker = 0;
您对pi的表示不够长。您已注释掉/$PiWalker=0;在上一个循环中将其增加到44000之后,您现在将其增加到超出$theGoodPi@NiettheDarkAbsol你是什么意思?我这么做了,但它只是输出十六进制字母,有点像这样:在控制台输出中。