0

我有这个代码:

$img=imagecreatefrompng('http://partner-ad.photobucket.com/albums/g46/xanatha/WidgieWorld/Small-Yellow-Ball.png');

function foo($x,$y)
{
    $col=imagecolorat($img,$x,$y);
    $col=imagecolorsforindex($img,$col);
    var_dump($col);
}
foo(0,0);

echo '<br />';

$col=imagecolorat($img,0,0);
$col=imagecolorsforindex($img,$col);
var_dump($col);

乍一看,我们会认为它会输出两次相同的结果。

但输出是:

NULL
array(4) { ["red"]=> int(255) ["green"]=> int(255) ["blue"]=> int(255) ["alpha"]=> int(0) } 

怎么会这样?
我必须做什么才能将代码放入函数中并使其工作?

4

4 回答 4

2

您是否尝试通过$imgas 参数?

或者,如果您真的坚持不$img作为论点传递。你也可以把它放在你的函数的顶部。

global $img;

正如有人所说的这个问题。$img未在函数范围内定义。要访问它,您要么必须使用global它是否为全局变量。或者您必须将其作为参数传递。

于 2012-07-08T09:49:27.083 回答
1

$img在函数内部不可见。您必须在函数内使用关键字 global 使其可见。

$img=imagecreatefrompng('http://partner-ad.photobucket.com/albums/g46/xanatha/WidgieWorld/Small-Yellow-Ball.png');

function foo($x,$y)
{
    global $img; //<--------------Makes $img visible inside the function
    $col=imagecolorat($img,$x,$y);
    $col=imagecolorsforindex($img,$col);
    var_dump($col);
}
foo(0,0);

echo '<br />';

$col=imagecolorat($img,0,0);
$col=imagecolorsforindex($img,$col);
var_dump($col);

php.net/manual/language.variables.scope.php

于 2012-07-08T09:52:48.210 回答
0
function foo($x,$y,$img)
{
    $img_png = imagecreatefrompng($img);
    $col=imagecolorat($img_png,$x,$y);
    $col=imagecolorsforindex($img_png,$col);
    var_dump($col);
}
foo(0,0,'http://partner-ad.photobucket.com/albums/g46/xanatha/WidgieWorld/Small-Yellow-Ball.png');

无法访问在函数外部定义的变量。

于 2012-07-08T09:50:32.777 回答
0

变量具有函数作用域$img未定义且在您的foo函数中不可用。您还需要将其传递给函数。

于 2012-07-08T09:50:55.557 回答