PHP - 使用参数调用函数时出现问题

时间:2012-07-25 21:25:49

标签: php

我需要在PHP中调用一个接受3个参数RGB值的函数。此函数将RGB颜色值转换为HSL值,因此括号中需要(R,G,B)

这是我的功能:

function RGBtoHSL($red, $green, $blue) {
  // convert colors
}

其中,如果我对以下内容进行测试,它的工作正常:

RGBtoHSL(255,0,0);

也是这样的:

RGBtoHSL(255,000,000);

现在,在我的页面下方,我有一个变量$displayRGB,它以当前格式xxx,xxx,xxx保存当前像素RGB值。我已经回应了这个变量来测试格式符合我的要求,但是当我尝试将这个变量添加到我的函数调用者时,它失败并显示错误“Missing argument 2,Missing argument 3”并指向这一行:

RGBtoHSL($displayRGB);

我仍然在使用PHP(来自ASP),有人可以帮我指出正确的方向并将我的假人传给我吗?

6 个答案:

答案 0 :(得分:4)

你的$displayRGB是一个单一的变量(字符串类型,我推测)。你可以做的是将这个字符串拆分成一个数组:

$rgbArray = explode(',', $displayRGB);

然后将其传递给您的函数

RGBtoHSL($rgbArray[0], $rgbArray[1], $rgbArray[2]);

答案 1 :(得分:3)

您不能将数组(我假设$ displayRGB是一个数组)作为PHP中的“所有三个参数”传入。尝试

RGBtoHSL($displayRGB[0], $displayRGB[1], $displayRGB[2]);

或修改您的函数以接受数组。

如果$ displayRGB是一个“xxx,yyy,zzz”的字符串,你可以在其上运行爆炸

$colors = explode(",", $displayRGB);

并将$ colors设置为索引包含xxx,yyy和zzz的数组。

然后如上所述传递它。

答案 2 :(得分:1)

尝试此而不是eval

call_user_func_array('RGBtoHSL', explode(',', $displayRGB));

答案 3 :(得分:0)

你的$ displayRGB值是多少?

如果它是“255,0,0”你应该先“爆炸”

e.g。

<?php

list($r,$g,$b)=explode(',',$displayRGB);
RGBtoHSL($r,$g,$b);

答案 4 :(得分:-2)

你不能在函数中放入一个字符串,并希望它为你爆炸字符串。

你需要这样:

$string = '255,0,0';
$array = explode(',', $string);
RGBtoHSL($array[0], $array[1], $array[2]);

答案 5 :(得分:-2)

我可能会因此受到抨击,但这肯定有用:

eval("RGBtoHSL($displayRGB);");

不要这样做。它会起作用......但是不要这样做。