Intereting Posts

Использование условных значений из массива в выражении if …

У меня есть ряд условий:

$arrConditions = array ('>=2', '==1', '<=10'); 

… который я хочу использовать в выражении if ….

IE.

 if (5 $arrConditions[0]) { ...do something } 

… который будет таким же, как:

 if (5 >= 2) { ...do something } 

Любая помощь?

благодаря

Solutions Collecting From Web of "Использование условных значений из массива в выражении if …"

Как насчет этого ?

 <?php $arrConditions = array('==2', '==9', '==5', '==1', '==10', '==6', '==7'); $count = 0; $myval = 0; foreach ($arrConditions as $cond) { $str = "if(5 $cond) { return $count;}"; $evalval = eval($str); if (!empty($evalval)) { $myval = $count; } $count++; } switch ($myval) { case 0: echo '==2 satisfied'; break; case 1: echo '==9 satisfied'; break; case 2: echo '==5 satisfied'; break; case 3: echo '==1 satisfied'; break; case 4: echo '==10 satisfied'; break; default : echo 'No condition satisfied'; } ?> 

Такое требование является верным признаком плохого дизайна.
Скорее всего, вы можете сделать это другим, более обычным способом.

Тем не менее, никогда не используйте eval для таких вещей.
По крайней мере, хранить каждый оператор в парах – оператор и операнд.

 $arrConditions = array ( array('>=',2), array('==',1), array('<=',10), ); 

и затем используйте переключатель:

 list ($operator,$operand) = $arrConditions[0]; switch($operator) { case '==': $result = ($input == $operand); break; case '>=': $result = ($input >= $operand); break; // and so on } 

Но опять же – скорее всего, вы можете решить это еще один, гораздо более простой способ.