2013-02-23 16 views
0

聲明我有一個行代碼,看起來像這樣:地方,如果回聲

echo "Slope intercept form: $$"."y = ".toFraction($slope)."x + $b"."$$"; 

不過,我想補充的,如果來檢查,如果該數字是十進制運行功能「toFraction」的聲明。如果它不是一個分數,我希望它只是在沒有函數的情況下回顯$ slope變量。換句話說,這樣的事情:

echo "Slope intercept form: $$"."y = ".if(strpos($number,".") !== false){toFraction($slope)}else{$slope}."x + $b"."$$"; 

不過,我不知道這甚至有可能,或者如果是,什麼是完成它的正確方法是什麼?

+0

http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary – DaveRandom 2013-02-23 20:51:36

+1

不,這是不可能的。語句不能是表達式的一部分(字符串連接)。這裏一個可行的選擇可能是「三元操作符」。 – mario 2013-02-23 20:51:57

+0

它不是回聲,而是你正在談論的字符串。 – 2013-02-23 20:52:01

回答

1

的語法錯誤,你可以使用內聯如果與?:

echo "Slope intercept form: $$"."y = ".(strpos($number,".") !== false ? toFraction($slope) : $slope) . "x + $b"."$$"; 

或試試這個語法:

echo "Slope intercept form: $$"."y = "; 
if(strpos($number,".") !== false) { 
    echo toFraction($slope) 
} else { 
    echo $slope; 
} 
echo "x + $b"."$$"; 

內聯IFS的語法模式如下:(條件?真實路徑:虛假路徑)

0

使用Ternary Operator

echo "Slope intercept form: $$"."y = ".((strpos($number,".") !== false) ? toFraction($slope): $slope)."x + $b"."$$"; 
0
echo "Slope intercept form: $$"."y = " . ((strpos($number,".") !== false ? toFraction($slope) : $slope) . "x + $b" . "$$"); 

使用ternary operator

0
echo "Slope intercept form: $$"."y = "; 
if(strpos($number,".") !== false) echo toFraction($slope); else echo $slope; 
echo "x + $b"."$$"; 
0

請記住2個簡單的規則:

  1. 嘗試寫垂直而不是水平。長的陳述要麼是不可讀的,要麼是模糊的。
  2. 三元運算符很醜。

所以

if (strpos($number,".") !== false) { 
    $slope = toFraction($slope); 
} 
echo 'Slope intercept form: $$y = '.$slope.'x + '.$b.'$$';