3

長いif..else関数をモジュール化しようとしています。

$condition = "$a < $b";
if($condition)
{
    $c++;
}

リテラル文字列を論理式に変換する方法はありますか?

4

4 に答える 4

7

長い if..else 関数をモジュール化しようとしています。

そのために条件を文字列に入れる必要はありません。ブール値trueまたはを保存するだけfalseです:

$condition = ($a < $b);
if($condition)
{
    $c++;
}

$a と $b の値は、$condition の定義とその使用法の間で変わる可能性があります

1 つの解決策は Closure です (定義と使用が同じスコープで行われていると仮定します)。

$condition = function() use (&$a, &$b) {
    return $a < $b;
}
$a = 1;
$b = 2;
if ($condition()) {
    echo 'a is less than b';
}

しかし、あなたが何を達成しようとしているのかをリモートで知らなければ、これがあなたにとって意味があるかどうかはわかりません.

于 2013-01-24T01:25:33.537 に答える
2

結果を決定するのに十分な変数がわかっている場合は、ラムダを使用します

$f = function ($a, $b) { return $a < $b; }

if ($f($x, $y)){}
于 2013-01-24T01:32:32.077 に答える
1

evalを使用してこれを行うことができます。ただし、すぐに条件を評価しない理由がわかりません。

于 2013-01-24T01:26:16.937 に答える
-3
<?php
     $a=0;
     $b=1;
    function resultofcondition()
    {
        global $a,$b;
        return $a<$b;
    }
    if(resultofcondition()){
        echo " You are dumb,";
    }else{
        echo " I am dumb,"; 
    }
    $a=1;
    $b=0;
    if(resultofcondition()){
        echo " You were correct.";
    }else{
        echo " in your face.";
    }
?>

GLOBAL パラメータが欠落していたことをコメントしていただき、本当にありがとうございます。反対票を投じた人のために、そのコードは何を出力しますか? ¬_¬ w/e 楽しんでね xD

于 2013-01-24T01:25:23.233 に答える