2015-08-24 5 views
-2

У меня есть оператор if, который используется в двух разных функциях против тех же условий. Проблема в том, что условия заканчиваются довольно длинными (5-7 ОР) и, возможно, в будущем их необходимо будет изменить. Если они будут изменены, условия будут одинаково изменяться в обеих функциях.Сгенерировать условия IF из функции

Пример одного, если заявление:

if ($this->object === 'one' || $this->object === 'two' || $this->object === 'three') { 
    echo 'Yes!'; 
} else { 
    echo 'No!'; 
}; 

Я имею в виду создание массива и функцию, которая будет подаваться в если заявление, но не могу думать о какой-либо способ получить, если заявление, чтобы проверить а не проверять наличие ввода.

$this->object = 'one'; 
$test_array = array('one', 'two', 'three'); 

function stmbuilder($array) { 
    $count = count($array); 
    $stm = ''; 

    for ($i = 0; $i < $count; $i++) { 
     $intro = '$this->object ==='; 
     $connector = ($i < $count-1 ? ' || ' : ''); 
     $stm .= $intro . $array[$i] . $connector; 
    } 

    return $stm; 
} 

$condition = stmbuilder($test_array); 

if ($condition) { 
    echo 'Yes!'; 
} else { 
    echo 'No!'; 
} //Will always echo Yes! since $condition has a value but does not check against what $this->object is 

Любая помощь приветствуется!

+1

'if (in_array ($ this-> object, $ test_array, true))' – AbraCadaver

ответ

4

Почему не просто in_array()?

$arr = array('one', 'two', 'three'); 

in_array('four', $arr) -> false 
in_array('two', $arr) -> true 
Смежные вопросы