拉动随机开关案例


Pulling random switch cases

我有一个开关功能,我希望能够从以下位置随机提取案例:

<?php
    function peopleGet($name) {
        switch ($name) { 
            case 'gloria': 
            echo 'gloria';
            break;
            case 'benjamin': 
            echo 'benjamin';
            break;
            case 'callum': 
            echo 'callum';
            break;
        }
    }
?>

我仍然需要能够拉动特定的变量:

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

但是,是否可以使用相同的函数来拉动随机(无重复)情况?

答案是否定的(实际上你不应该),因为 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
?>

这是你想要实现的吗?

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

通过以下方式获取不同的值: $myPerson=$peopleArray['gloria'];

使用以下命令获取随机值:$myPerson=$peopleArray[array_rand($peopleArray)];

注意:array_rand手动 — 从数组中选择一个或多个随机条目

你指的是捕获尚未定义的案例的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;
}