我試圖模塊化一個很長的if..else
函數。我可以在字符串中存儲邏輯比較嗎?
$condition = "$a < $b";
if($condition)
{
$c++;
}
是否有任何方法將文字字符串翻譯成邏輯表達式?
我試圖模塊化一個很長的if..else
函數。我可以在字符串中存儲邏輯比較嗎?
$condition = "$a < $b";
if($condition)
{
$c++;
}
是否有任何方法將文字字符串翻譯成邏輯表達式?
我想模塊化一個冗長的if..else函數。
你不需要把條件爲一個字符串,只存儲布爾true
或false
:爲$ a和$ b
值定義之間可能會改變條件及其用法
一種解決方案是閉合(假設定義和用法在同一範圍內發生):
$condition = function() use (&$a, &$b) {
return $a < $b;
}
$a = 1;
$b = 2;
if ($condition()) {
echo 'a is less than b';
}
但我不知道這對你是否合理,而不需要知道你正在努力完成什麼。
<?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.";
}
?>
事實上感謝評論說出來,缺少全局參數,對於那些誰否決了,什麼話該代碼輸出? ¬_有興趣xD
這在PHP中不起作用,'$ a'和'$ b'在函數範圍中不可用。 –
他們是.-。 .-。 –
@RicardoOrtegaMagaña他們當然不是,除非你使用'global $ a,$ b;' –
使用拉姆達如果你知道有足夠的判斷結果變量
$f = function ($a, $b) { return $a < $b; }
if ($f($x, $y)){}
+1。雖然你不需要這裏的lambda,只是一個簡單的舊函數聲明也可以做到這一點:) –
*您可以用*'eval'做到這一點,但標準的做法是,也許定義一組函數... –
你應該解釋一下,你對「模塊化」意味着什麼。 –
請顯示你冗長的if..else塊(不是功能)。我幾乎可以肯定,解決方案不是'模塊化'。 – markus