2

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

这是我的功能:

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

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

RGBtoHSL(255,0,0);

也可以这样工作:

RGBtoHSL(255,000,000);

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

RGBtoHSL($displayRGB);

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

4

6 回答 6

4

$displayRGB是一个单一的变量(我想是字符串类型的)。您可以做的是将此字符串拆分为一个数组:

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

然后将其传递给您的函数

RGBtoHSL($rgbArray[0], $rgbArray[1], $rgbArray[2]);
于 2012-07-25T21:29:45.353 回答
3

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

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

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

如果 $displayRGB 是 "xxx,yyy,zzz" 的字符串,您可以在其上运行爆炸

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

它会将 $colors 设置为一个数组,其索引包含 xxx、yyy 和 zzz。

然后像我上面提到的那样通过它。

于 2012-07-25T21:28:47.600 回答
1

试试这个而不是 eval

call_user_func_array('RGBtoHSL', explode(',', $displayRGB));
于 2012-07-25T21:34:27.817 回答
0

你的 $displayRGB 值是多少?

如果是 "255,0,0" 你应该先做 "explode"

例如

<?php

list($r,$g,$b)=explode(',',$displayRGB);
RGBtoHSL($r,$g,$b);
于 2012-07-25T21:30:16.580 回答
-2

您不能将字符串放入函数中并期望它为您分解字符串。

你需要这样:

$string = '255,0,0';
$array = explode(',', $string);
RGBtoHSL($array[0], $array[1], $array[2]);
于 2012-07-25T21:29:37.003 回答
-2

我可能会为此大发雷霆,但这肯定会奏效:

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

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

于 2012-07-25T21:31:28.143 回答