使用递归递增数组值

时间:2012-10-28 20:50:43

标签: php arrays recursion

我有一个例子,只是为了表明我不知道该怎么做。当你调用该函数时,它返回1个水果,或者如果它滚动5,那么我希望水果为每个结果递增1次,它会滚动并返回一个数组,可能会进入最大递归,如20,说得通! :)

function fruitBasket(&$fruit = array()) {
    $dice = rand(1, 5);
    switch($dice) {
        case 1:
            $fruit['watermelon'] = ++$watermelon;
        break;
        case 2:
            $fruit['orange'] = ++$orange;
        break;
        // etc...
        case 5:
            for($i = 1; $i <= rand(1, 5); $i++) {
                fruitBasket($fruit);
            }
        break;
    }
    return $fruit;
}

1 个答案:

答案 0 :(得分:0)

我不确定我完全理解你的问题,因为你的描述有点令人困惑,我无法添加评论,但是从我的理解中可以看出:

function fruitBasket(&$fruit = array(), $dice = 0, $depth = 1) {

    if($depth == 20)
    return $fruit;

    $dice = ($dice > 0 ? $dice : rand(1, 5));

    switch($dice) {
        case 1:
            $fruit['watermelon'] += 1;
        break;
        case 2:
            $fruit['orange'] += 1;
        break;
        // etc...
        case 5:
        $depth += 1;

            for($i = 1; $i <= rand(1, 5); $i++) {
                fruitBasket($fruit, $i, $depth);
            }
        break;
    }
    return $fruit;
}