【发布时间】:2015-01-02 12:09:20
【问题描述】:
我在php中有数组
$randomarray = array('1106'=>'5','1110'=>'2','11867'=>'3','1206'=>'2','1210'=>'1','1223'=>'6','1235'=>'3','12565'=>'4','1258'=>'5','12690'=>'2','12693'=>'3','1283'=>'1','12944'=>'5');
我想从数组中随机选择计数正好为 20 的元素。每个元素只需要一次
我尝试了一些数组随机示例。我无法得到我期望的确切总数。
这是我所做的示例。但是循环变成了不定式,
function randomTo($numIn) {
global $randomarray;
$numOut = 0;
$numbers = array();
do {
$key = array_rand($randomarray );
$add = $mainarray[$key];
if($numOut + $add > $numIn)
continue;
$numOut += $add;
$numbers[] = $add;
unset($mainarray[$key]);
} while( $numOut != $numIn );
return $numbers;
}
$testdata = randomTo(20);
【问题讨论】:
-
shuffle和array_slice。请展示您尝试过的内容,并解释您遇到的具体问题。 (您的输入数组的元素少于 20 个,那么您希望如何获得 20 个唯一的元素?) -
我没有选择 20 个元素。我正在选择 20 的数组值。
-
显示您的挑选标准示例。 “数组值为 20”没有任何意义。
-
@mario 请检查问题。我更新了代码 sn-p
-
我会在这里使用稍微不同的方法:1)在一个单独的数组中收集总计 20 个键的所有组合; 2) 从该数组中随机选择一个元素。