에 배열에서 조건 값을 사용.나는 조건의 배열은 경우 ... 문
IE.
if (5 >= 2)
{
...do something
}
어떤 도움 : 같은 것
if (5 $arrConditions[0])
{
...do something
}
...?
감사
에 배열에서 조건 값을 사용.나는 조건의 배열은 경우 ... 문
IE.
if (5 >= 2)
{
...do something
}
어떤 도움 : 같은 것
if (5 $arrConditions[0])
{
...do something
}
...?
감사
어떨까요?
<?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';
}
?>
이러한 요구 사항은 나쁜 디자인의 확실한 표시이다.
아마도 가장 일반적인 방법으로 할 수 있습니다.
그럼에도 불구하고 그런 일에는 절대로 평가 절대로 사용하지 마십시오.
최소한 각 연산자를 쌍으로 저장하십시오 - 연산자와 피연산자. 당신이 훨씬 더 쉬운 방법을 그 서로를 해결할 수있는 가장 가능성이 - 다시
list ($operator,$operand) = $arrConditions[0];
switch($operator) {
case '==':
$result = ($input == $operand);
break;
case '>=':
$result = ($input >= $operand);
break;
// and so on
}
그러나 :
$arrConditions = array (
array('>=',2),
array('==',1),
array('<=',10),
);
한 다음 스위치를 사용하십시오.
'eval'을 사용할 수는 있지만 속도가 너무 느려서 내게 들리지 않았습니다. 아니면, 소매를 감아 수동으로 할 수 있습니다.'switch ($ operator) {case '==': $ result = $ input == $ operand; }'등 – Jon
왜 처음부터 이렇게하고 싶습니까? – Syjin
그래, 수동으로 했어.하지만 더 우아한 솔루션이 있는지 궁금해하고 있었어. – ojsglobal