-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 — 从数组中选择一个或多个随机条目

于 2012-04-26T11:29:30.943 回答
0

Are you referring to the default: clause that catches cases that haven't beeen defined?

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 回答