0

どうすればいいかわからないことを示すためだけの例があります。関数を呼び出すと、1 つの果物を返すか、5 をロールする場合は、ロールする結果ごとに果物を 1 ずつ増やして配列を返します。理にかなっています!:)

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;
}
4

1 に答える 1

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;
}
于 2012-10-28T21:14:34.317 に答える