PHP数组在刷新时选择随机值

时间:2017-03-30 07:21:06

标签: php arrays sorting random

我在页面上有提交按钮。每次点击它都应该给出随机的不同结果。

我有以下数组代码

$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
)

1 个答案:

答案 0 :(得分:1)

我添加了可能有助于您获得的内联评论:

Demo here

<?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