【发布时间】:2014-01-21 20:59:40
【问题描述】:
我正在尝试创建一个由 RGB 值组成的所有可能颜色的数组。 r=0 b=0 g=0 到 r=255 b=255 g=255 之间的每个排列。我的函数的想法是,当它被调用时,您提供一个限制数字,以便该函数返回一个 RGB 值数组,直到这个数字,以阻止它返回所有 1600 万。我下面的代码返回 767 个排列 (256 * 3) 我如何让它返回完整的 1600 万,直到我提供的限制数量?
function colourArray($number) {
$r = 0;
$g = 0;
$b = 0;
$i = 0;
while ($i <= $number) {
$colours[] = array($r,$g,$b);
$r++;
$i++;
}
$i = 0;
while ($i <= $number) {
$colours[] = array($r,$g,$b);
$g++;
$i++;
}
$i = 0;
while ($i <= $number) {
$colours[] = array($r,$g,$b);
$b++;
$i++;
}
return $colours;
}
【问题讨论】:
-
看起来你需要嵌套你的while循环。但是拥有 1600 万个数组可能会导致过载、超时或其他问题
-
这只是一个练习吗?因为我确信有比计算这个更好的方法来解决您的问题。
-
是的,这只是一个有趣的练习。
-
拿一张纸,假装你是php解释器。现在运行您的代码。这样一来,您就会发现为什么您在如此微不足道的任务中失败了。
-
为什么还要循环检查值,当转换为 int 并检查值高于或低于某个阈值时,效率会更高。简而言之,您不需要循环每个可能的值来确定一个值是否在给定的有效范围内。
标签: php arrays permutation rgb