-1

ケースをランダムにプルできるようにしたいスイッチ機能があります。

<?php
    function peopleGet($name) {
        switch ($name) { 

            case 'gloria': 
            echo 'gloria';
            break;

            case 'benjamin': 
            echo 'benjamin';
            break;

            case 'callum': 
            echo 'callum';
            break;
        }
    }
?>

私はまだ特定の変数を引き出すことができる必要があります:

<?php peopleGet('gloria'); ?>

ただし、同じ関数を使用して、ランダムな(繰り返されない)ケースをプルできるようにすることは可能ですか?

4

3 に答える 3

3

switch caseステートメントはデータ構造ではなく制御構造であるため、答えはノーです(実際にはそうすべきではありません)。代わりに値の配列を使用する方がよいでしょう。さらに、単一の値を再調整する代わりに、複数の値を返すことができます。

何かのようなもの:

<?php 
function peopleGet($name=null){
    $people = array('gloria'=>array('name'=>'Gloria',
                                    'age'=>'29',
                                    'location'=>'usa'),
                  'benjamin'=>array('name'=>'Benjamin',
                                    'age'=>'39',
                                    'location'=>'uk'),
                    'callum'=>array('name'=>'Callum',
                                    'age'=>'19',
                                    'location'=>'uk'));

    if($name==null){
        $keys = array_keys($people);
        shuffle($keys);
        return $people[$keys[mt_rand(0,count($people)-1)]];
    }else{
        return $names[$name];
    }                         
}
print_r(peopleGet());//random
print_r(peopleGet('gloria'));//gloria's array
?>
于 2012-04-26T11:32:39.390 に答える
1

これはあなたが達成したいことですか?

$peopleArray=Array('gloria'   => 'gloria',
                   'benjamin' => 'benjamin',
                   'callum'   => 'callum');

次の方法で明確な値を取得します。$myPerson=$peopleArray['gloria'];

次のコマンドでランダムな値を取得します。$myPerson=$peopleArray[array_rand($peopleArray)];

注:array_rand manual —配列から1つ以上のランダムなエントリを選択します

于 2012-04-26T11:29:30.943 に答える
0

default:定義されていないケースをキャッチする条項を参照していますか?

switch ($name) { 
    // Gloria
    case 'gloria': 
    echo 'gloria';
    break;

    // Benjamin
    case 'benjamin': 
    echo 'benjamin';
    break;

    // Callum
    case 'callum': 
    echo 'callum';
    break;

    default:
    echo $name; // or whatever that needs to happen if it is an undefined case
    break;
}
于 2012-04-26T11:17:12.157 に答える