假设我有以下方法:
public function chooseCar($car)
{
return 'You chose this car: ' . $car;
}
我需要为$car参数中可以传递给chooseCar的内容设置特定的值,例如,让开发人员在"Mercedes"、"BMW"answers"Ford"之间进行选择,这在php中可行吗?
您可以尝试以下代码。
public function chooseCar($car)
{
$predefined_vals = array( 'Mercedes', 'BMW', 'Ford');
if(in_array($car,$predefined_vals)){
return 'You chose this car: ' . $car;
}else{
return "undefined values chosen"
}
}
我有一种方法。
在函数本身中,创建一个数组。
并检查参数$car
是否在_array()中
public function chooseCar($car = '') {
$allowedCars = array('Mercedes', 'BMW', 'Ford');
if (! in_array($car, $allowedCars)) {
return FALSE;
}
return 'You chose this car: ' . $car;
}
您可以检查参数是否为"可接受值",如下所示:
var $acceptableCars = [ 'Mercedes', 'BMW', 'Ford'];
function chooseCar($car) {
if (in_array($car, $acceptableCars)) {
return 'You chose this car: ' . $car;
}
throw new Exception('Not a valid car');
}
类似的东西可以帮助您获得可用汽车的固定列表:
<?php
class Cars
{
private $availableCars = ['Merc', 'Ford'];
public function chooseCar($car)
{
if (in_array($car, $this->availableCars)) {
return 'You chose this car: ' . $car;
}
throw new 'Exception('Invalid car chosen!');
}
}
正如有人建议的那样,使用枚举,这样你的程序会设计得更好,并且你确信你的函数是用car正确调用的,而不是其他东西:
class CarBrand extends SplEnum {
// No value, then undefined
const __default = 1;
const MERCEDES = 1;
const AUDI = 2;
}
function chooseCar(CarBrand $car) {
if (CarBrand::MERCEDES == $car) {
echo "Mercedes.'n";
} elseif (CarBrand::AUDI == $car) {
echo "Audi.'n";
}
}
$car = new CarBrand(CarBrand::MERCEDES);
chooseCar($car);
通过下面的代码,如果你知道的汽车类型
public function chooseCar($car)
{
switch($car)
{
case 'BMW':
return 'You chose this car: ' . $car;
break;
case 'Ford':
return 'You chose this car: ' . $car;
break;
default:
return 'Soory, Your car not exist in the list';
}
}
您也可以使用php in_array()或array_search()函数,如其他答案中所述。