PHP,如何通過零捕獲除法?我有一個(gè)必須動(dòng)態(tài)創(chuàng)建的大型數(shù)學(xué)表達(dá)式。例如,一旦我解析了“某事”,結(jié)果將是一個(gè)字符串,如:"$foo+$bar/$baz";。所以,為了計(jì)算該表達(dá)式的結(jié)果,我正在使用eval函數(shù)......這樣的事情:eval("\$result = $expresion;");echo "The result is: $result";這里的問題是,有時(shí)我會(huì)得到錯(cuò)誤,表示存在除零的錯(cuò)誤,而且我不知道如何捕獲該異常。我嘗試過這樣的事情:eval("try{\$result = $expresion;}catch(Exception \$e){\$result = 0;}");echo "The result is: $result";要么:try{
eval("\$result = $expresion;");}catch(Exception $e){
$result = 0;}echo "The result is: $result";但它不起作用。那么,如果存在除零值,我怎么能避免我的應(yīng)用程序崩潰?編輯:首先,我想澄清一下:表達(dá)式是動(dòng)態(tài)構(gòu)建的,所以如果分母為零,我不能只評(píng)估它。那么......關(guān)于Mark Baker的評(píng)論,讓我舉個(gè)例子。我的解析器可以構(gòu)建這樣的東西:"$foo + $bar * ( $baz / ( $foz - $bak ) )"解析器逐步構(gòu)建字符串而不用擔(dān)心變量的值...所以在這種情況下如果$foz == $bak實(shí)際上除以零:$baz / ( 0 )。另一方面,正如皮特建議的那樣,我嘗試過:<?php
$a = 5;$b = 0;if(@eval(" try{ \$res = $a/$b; } catch(Exception \$e){}") === FALSE)
$res = 0;echo "$res\n";?>但它沒有打印任何東西。
PHP,如何通過零捕獲除法?
慕運(yùn)維8079593
2019-08-28 15:10:06