2016-04-13 8 views
6

Powiedzmy mam następujący sposób:Tworzenie funkcji PHP z predefiniowanych wartości dla parametru

public function chooseCar($car) 
{ 
    return 'You chose this car: ' . $car; 
} 

muszę ustawić konkretne wartości jakie mogą być przekazywane do chooseCar w argumencie $ samochodowym, na przykład pozwolić deweloper wybiera pomiędzy "Mercedes", "BMW" i "Ford", czy to możliwe w php?

+0

Utwórz tablicę i użyj '$ car' jako klucza lub czegoś podobnego. – Rizier123

+0

http://php.net/manual/en/class.splenum.php –

+0

Bardzo dobre pytanie! Proszę, proszę, nie idź ze standardowym 'if else' wszyscy wydają się sugerować, zanim przeczytasz link SplEnum i wkleiłem go powyżej. Są tacy nudni! –

Odpowiedz

1

Możesz spróbować poniżej kodu.

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" 
    } 
} 
0

Coś wzdłuż linii byłoby pomóc w stałej listy dostępnych samochodów:

<?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!'); 
    } 
} 
-1

Według poniższy kod Jeśli wiesz typów samochodów

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

Można również użyć php in_array() lub array_search() funkcje jak opisać w innych odpowiedziach.

+0

dlaczego to się robi nagetive? –

+0

Składnia jest niepoprawna. – LMS94

+1

Dzięki, poprawiłem. –

1

Mam jedno podejście do tego.

W samej funkcji utwórz tablicę.

i sprawdzić, czy parametr $car jest in_array()

public function chooseCar($car = '') { 
$allowedCars = array('Mercedes', 'BMW', 'Ford'); 
if (! in_array($car, $allowedCars)) { 
    return FALSE; 
} 
return 'You chose this car: ' . $car; 
} 
1

Można sprawdzić, czy parametr jest „dopuszczalna wartość” tak:

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'); 
} 
0

Jak ktoś zasugerował, użyj enum, to sposób, w jaki program zostanie lepiej zaprojektowany, i jesteś pewien, że twoja funkcja jest poprawnie nazwana samochodem, a nie inna:

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); 
Powiązane problemy