2017-04-03 42 views
0

條件是有沒有辦法從$獲得真正的聲明中,如果條件:捕捉真實的陳述,從如果有多個語句

$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條件?

+0

可能有多個檢查。如果'$ month == 4'和'$ year == 2017'都是'true'呢?輸出是什麼? –

+0

我不明白? – Webbanditten

+0

是的,這正是我想得到的....但沒有多個ifs裏面....是可能的嗎? – lewis4u

回答

2

這永遠只能顯示,因爲如何,如果作品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將具有最後的比較值。

+0

這是非常有趣的,我需要測試它 – lewis4u

+0

我得到一個錯誤,請嘗試運行該代碼請在這裏:http://phptester.net/ – lewis4u

+0

@ lewis4u我更新了代碼,錯過了一個'(' – apokryfos

1

試試這個。

<?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是刪除尾隨「,」。

+0

目前還不清楚輸出應該是什麼 –

+1

據我所知,該聲明應該讀取一個列表,其中哪些列表觸發if語句?有了這個例子,如果有更多的列表,它會列出更多。我認爲可以列出多個,因爲'echo'使用複數表示「語句」。 – JustCarty

1

這裏是布爾變量的解決方案:

$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"; 
} 
3

你不能沒有多個條件。無論答案,你會得到這裏如:

  • 內嵌if語句
  • 裹在功能
  • 在條件
  • 開關
  • 循環
  • 條件結果分配

等將總是要求你有多個條件。

如果你不介意多種條件,只是尋找最優雅的方式來寫它,那是另一個問題,我們可以提供幫助。

+1

它不回答這個問題。 –

+0

好的,我已經更新了我的問題....是否有可能捕獲哪些語句使if條件成立? – lewis4u

+1

@SougataBose如何不回答這個問題?他問是否有可能,答案是否定的,沒有 - 閱讀上述完整答案 – Tom

0

這可能幫助 -

// 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; 
    } 
} 

Demo