5

if condition に条件を動的に追加しようとしています。しかし、それは機能していません。問題を解決するのを手伝ってください。

私はこのようなコードを試しています

 $day_difference = "some integer value";

  if(sheduled_time == 'evening'){
        $condition = '>';
    }else{
      $condition = '==';
    }

それから

if($day_difference.$condition.  0){ 
  echo "something";       
 }else{
   echo "h";
 }
4

5 に答える 5

6

ジェラルドのソリューションの代替。switch-case 操作を使用して入力を検証する関数を使用することをお勧めします。

function evaluate ($var1, $operator, $var2)
{
    switch $operator
    {
         case: '<': return ($var1 < $var2);
         case: '>': return ($var1 > $var2);
         case: '==': return ($var1 == $var2);
    }
    return null;
}
于 2012-08-24T13:59:19.223 に答える
5

必要なのはeval()メソッドです。

いえ

$var1 = 11;
$var2 = 110;
$cond1 = '$var1 > $var2';
$cond2 = '$var1 < $var2';

if(eval("return $cond1;")){
   echo $cond1;
}

if(eval("return $cond2;")){
   echo $cond2;
}

後述するように、この方法を使用する際には必要な予防措置を講じる必要があります。

于 2012-08-24T13:53:32.093 に答える
3

これはこれを行う方法ではありません。必要な条件が満たされた場合
に返す関数を定義するだけです。 たとえば、次の 2 つの引数を受け取る関数を定義できます。true
decide$day_difference$scheduled_time

function decide($day_difference, $scheduled_time)
{
    if($scheduled_time == 'evening')
    {
        return $day_difference > 0;
    }
    else
    {
        return $day_difference == 0;
    }
}

そして、次のように使用します。

if( decide($day_difference, $scheduled_time) )
{ 
    echo "something";       
}
else
{
    echo "h";
}
于 2012-08-24T14:00:17.423 に答える
1

あなたの要件に応じて、これは PHPeval()関数を使用して行うことができますが、必要な場合にのみ使用することはお勧めしません。

PHPでevalはいつ悪になるのかを確認できますか?

代わりに以下のスクリプトを使用できます。

if(  $sheduled_time == 'evening' && $diff > 0 )
{
    echo "This is the Evening and the Difference is Positive";
}
else if($diff == 0)
{
    echo "This is not evening";
}
于 2012-08-24T14:09:20.943 に答える
0

私の質問を解決するのを手伝ってくれてありがとう

私はこれを別の方法で解決しました

 $day_difference = "some integer value";

 $var1 = false ;
if($sheduled_time == 'evening_before'){ 
    if($day_difference > 0 ){ 
        $var1  = true ;
    }
}else{
    if($day_difference == 0 ){ 
        $var1  = true ;
    }
}

if($var1 === true){ 
  echo "something";       
}else{
  echo "h";
}
于 2012-08-25T11:12:07.130 に答える