Bir işletmeci olarak bir değişken kullanarak

6 Cevap

Yani aşağıdaki gibi bir şey var:

$a = 3;
$b = 4;
$c = 5;
$d = 6;

ve ben gibi bir karşılaştırma çalıştırın

if($a>$b || $c>$d) { echo 'yes'; };

That all works just fine. Is it possible to use a variable in place of the operator? Something like:

$e = ||;

Sonra olarak kullanmak hangi

if($a>$b $e $c>$d) { echo 'yes'; };

6 Cevap

Hayır, bu sözdizimi mevcut değildir. Yapabileceğin en iyi $ e bir durum olarak her operatör ile kullanıcı girişi (örneğin bir form), ya da bir switch deyimi geldi özellikle tavsiye olmaz bir eval (), olurdu

switch($e)
{
    case "||":
        if($a>$b || $c>$d)
            echo 'yes';
    break;
}

Bu mümkün değil, ama bunun yerine bir işlevini kullanabilirsiniz. Tabii ki, bunları kendiniz tanımlamanız gerekiyor. Bu PHP 5.3 'nin kapanışları kullanarak oldukça basit olacaktır:

$or = function($x, $y)
{
    return $x || $y;
};

if ($or($a > $b, $c > $d))
{
    echo 'yes';
};

Hayır, bu mümkün değildir.

hayır. php bunu yapmak için hiçbir yolu yoktur.

Sen eval kullanmak, ancak kolayca çok dikkatli değilseniz kod enjeksiyon saldırılarına her türlü sitenizi açığa bitebileceğini olabilir.

Kodlu - A güvenli çözüm, önceden tanımlanmış bir beyaz liste karşı önerilen operatörü maç ve ardından sert operatörü ile kod eğer bir bitle çağırmak olacaktır.

C.