【发布时间】:2011-09-04 22:16:00
【问题描述】:
想法是发布一个最大值和一个最小值,然后生成两者之间的随机数。
例如$mins = array(30,40,50,60)和$maxs = array(40,50,60,70),然后是我的代码:
foreach($mins as $minkey => $maxval) {
foreach($maxs as $maxkey => $maxval) {
$hits[$maxkey] = rand($minval,$maxval);
}
}
如果我然后var_dump($mins)、var_dump($maxs) 和var_dump($hits),我得到:
array(4) { [1]=> string(2) "30" [2]=> string(2) "40" [3]=> string(2) "50" [4]=> string(2) "60" } array(4) { [1]=> string(2) "40" [2]=> string(2) "50" [3]=> string(2) "60" [4]=> string(2) "70" } array(4) { [1]=> int(27) [2]=> int(36) [3]=> int(19) [4]=> int(41) }
我认为$maxs 和$mins 包含字符串值,而$hits 包含整数(即rand() 需要整数输入?)可能是问题所在,因此我将循环更新为:
foreach($mins as $minkey => $minval) {
foreach($maxs as $maxkey => $maxval) {
$minval = (int)$minval;
$maxval = (int)$maxval;
$hits[$maxkey] = rand($minval,$maxval);
}
}
但是在var_dump($mins)、var_dump($maxs) 和var_dump($hits) 上,这个被丢弃了:
array(4) { [1]=> string(2) "30" [2]=> string(2) "40" [3]=> string(2) "50" [4]=> string(2) "60" } array(4) { [1]=> string(2) "40" [2]=> string(2) "50" [3]=> string(2) "60" [4]=> string(2) "70" } array(4) { [1]=> int(0) [2]=> int(47) [3]=> int(0) [4]=> int(55) }
有人知道为什么这没有按预期工作吗?
非常感谢任何想法/答案/cmets :)!
【问题讨论】:
-
这段代码运行良好(参见ideone.com/0xD5l)。其他地方一定有错误。
-
奥利,20和13不在30-40和40-50之间?
-
啊,我看到你刚刚编辑了你的问题。所以让我改述一下;这段代码完全按照我的预期运行。
-
您是要生成 4 个随机数还是 16 个?
-
4,在不同的范围之间(30-40),(40-50等,每个键一个。我现在已将其更改为使用
for()循环,因为我的键是数字的,它工作正常,但我仍然不确定为什么它不能使用foreach()。