2

PHP で、RGB 値の 3 つのパラメーターを受け入れる関数を呼び出す必要があります。この関数は、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

PHP では、配列 ($displayRGB は配列であると仮定します) を「3 つの引数すべて」として渡すことはできません。試す

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」の場合は、最初に「爆発」する必要があります

例えば

<?php

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

私はおそらくこれで炎上しますが、これは間違いなく機能します:

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

やらないでください。それは機能します...しかし、それをしないでください。

于 2012-07-25T21:31:28.143 に答える
-2

関数に文字列を入れて、文字列が分解されることを期待することはできません。

次のようにする必要があります。

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