Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 导致错误的原因是什么:“注意:未初始化的字符串偏移量”?_Php_Image_Runtime Error_Pi - Fatal编程技术网

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

我的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 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你是什么意思?我这么做了,但它只是输出十六进制字母,有点像这样:在控制台输出中。