第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP,如何通過零捕獲除法?

PHP,如何通過零捕獲除法?

PHP
慕運(yùn)維8079593 2019-08-28 15:10:06
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";?>但它沒有打印任何東西。
查看完整描述

3 回答

?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

if ($baz == 0.0) {
    echo 'Divisor is 0';} else {
    ...}

如果你在evalled表達(dá)式中使用用戶輸入,那么使用eval是非常危險(xiǎn)的,而不是使用eval,為什么不在PHPClasses上使用適當(dāng)?shù)慕馕銎?,?a >evalmath,并且除以零之外引發(fā)一個(gè)干凈的異常


查看完整回答
反對(duì) 回復(fù) 2019-08-28
?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊

您只需要設(shè)置一個(gè)錯(cuò)誤處理程序,以便在出現(xiàn)錯(cuò)誤時(shí)拋出異常:

set_error_handler(function () {
    throw new Exception('Ach!');});try {
    $result = 4 / 0;} catch( Exception $e ){
    echo "Divide by zero, I don't fear you!".PHP_EOL;
    $result = 0;}restore_error_handler();


查看完整回答
反對(duì) 回復(fù) 2019-08-28
?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

這是另一個(gè)解決方案:

<?phpfunction e($errno, $errstr, $errfile, $errline) {
    print "caught!\n";}set_error_handler('e');eval('echo 1/0;');

看到 set_error_handler()


查看完整回答
反對(duì) 回復(fù) 2019-08-28
  • 3 回答
  • 0 關(guān)注
  • 663 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)