我在页面上有提交按钮。每次点击它都应该给出随机的不同结果。
我有以下数组代码
$qty = 10;
$array = array(4 => 2, 6 => 5, 7 => 10, 8 => 1, 10 => 5);
$array = arsort($array);
echo "<pre>";
print_r($array);
//array_rand($array);
exit;
数组对是Customer&amp;它的数量。我需要将$qty
与数组的最高值进行比较。如果匹配则将该值取出&amp;打印出最终结果。
没有必要为每位客户分配100%的数量。但最终10个数量应该整体分配。
因此输出可以是
首先点击提交按钮
Array
(
[7] => 10
)
第二次点击提交按钮
Array
(
[7] => 2
[6] => 2
[10] => 2
[4] => 2
[8] => 2
)
第3次点击提交按钮
Array
(
[7] => 5
[6] => 2
[10] => 3
)
答案 0 :(得分:1)
我添加了可能有助于您获得的内联评论:
<?php
$qty = 10;
$array = array(4 => 2, 6 => 5, 7 => 10, 8 => 1, 10 => 5);
$final_array = [];
while ($qty > 0) {
$rand_index = array_rand($array); // Get random customer
$max_val = $array[$rand_index]; // Get the maximum qty available for the customer
if (!$max_val) {
continue;
}
if ($max_val > $qty) {
$max_val = $qty;
}
$possible_val = rand(1, $max_val); // Assign random qty to the customer but not more than allowed
// Check if customer is added with qty already, if not add
if (array_key_exists($rand_index, $final_array)) {
$final_array[$rand_index] += $possible_val;
} else {
$final_array[$rand_index] = $possible_val;
}
$array[$rand_index] -= $possible_val;
$qty -= $possible_val;
}
print_r($final_array); // Your final desired combination