條件是有沒有辦法從$獲得真正的聲明中,如果條件:捕捉真實的陳述,從如果有多個語句
$a = 1;
$b = 3;
$c = 7;
if ($a == 3 || $b == 4 || $c == 7) {
echo "The true statement was: ";
}
我希望得到這樣的輸出:
The true statement was: 7
是它可能在PHP中做到這一點?
或者更好地說我該如何檢查哪條語句觸發了if條件?
條件是有沒有辦法從$獲得真正的聲明中,如果條件:捕捉真實的陳述,從如果有多個語句
$a = 1;
$b = 3;
$c = 7;
if ($a == 3 || $b == 4 || $c == 7) {
echo "The true statement was: ";
}
我希望得到這樣的輸出:
The true statement was: 7
是它可能在PHP中做到這一點?
或者更好地說我該如何檢查哪條語句觸發了if條件?
這永遠只能顯示,因爲如何,如果作品1所真實的陳述:
$a = 1;
$b = 3;
$c = 7;
if (($t = $a) ==3 || ($t = $b) == 4 || ($t=$c) == 7) {
echo "The true statement was: $t";
}
這裏發生的是它設置$t
每個變量,然後檢查是否分配結果(這是值)成功的。由於這是||
,因此它會在第一次成功時停止,因此$t
將具有最後的比較值。
試試這個。
<?php
$day = 1;
$month = 3;
$year = 2017;
$str = "The true statements are: " . ($day == 3 ? "$day, " : "") . ($month == 4 ? "$month, " : "") . ($year == 2017 ? "$year, " : "");
echo substr($str, 0, strlen($str) - 2);
?>
如果我理解正確,這應該工作。
該strlen($str) -2
是刪除尾隨「,」。
目前還不清楚輸出應該是什麼 –
據我所知,該聲明應該讀取一個列表,其中哪些列表觸發if語句?有了這個例子,如果有更多的列表,它會列出更多。我認爲可以列出多個,因爲'echo'使用複數表示「語句」。 – JustCarty
這裏是布爾變量的解決方案:
$day = 1;
$month = 3;
$year = 2017;
$cday = $day == 3;
$cmonth = $month == 4;
$cyear = $year == 2017;
if ($cday || $cmonth || $cyear) {
echo "The true statements are: ";
if($cday) echo "$day<br>\n";
if($cmonth) echo "$month<br>\n";
if($cyear) echo "$year<br>\n";
}
這可能幫助 -
// actual values
$day = 1;
$month = 3;
$year = 2017;
// values & variable names to check
$checks = array(
'day' => 1,
'month' => 4,
'year' => 2017,
);
// Loop through the checks
foreach($checks as $check => $value) {
// compare values
if($$check == $value) {
// output and stop looping
echo "The true statement was: $check -> $value";
break;
}
}
可能有多個檢查。如果'$ month == 4'和'$ year == 2017'都是'true'呢?輸出是什麼? –
我不明白? – Webbanditten
是的,這正是我想得到的....但沒有多個ifs裏面....是可能的嗎? – lewis4u