2017-10-16 38 views
-2

回聲$result->data['id']不會拋出錯誤的最簡單方法是什麼?最簡單的方法來檢查值的存在

$result = someBackendCall(1, 2, 3); 
if($result && isset($result->data) && isset($result->data['id'])){ 
    echo $result->data['id']; 
} 
+1

最簡單嗎?它們就像打字一樣簡單。你的意思是,最有效的,更少的開銷,最乾淨的代碼也許? – IncredibleHat

+0

字面上最少的打字量來完成工作。 – jozenbasin

+2

[在PHP中測試變量存在的最佳方法; isset()顯然是打破](https://stackoverflow.com/questions/418066/best-way-to-test-for-a-variables-existence-in-php-isset-is-clearly-broken) –

回答

1

它有點主觀,因爲有不同的方式,有的人找到一種方法比另一種更容易。有些人甚至認爲你寫的東西最簡單。

另外,例如,你可能只是做:

echo (isset($result->data['id'])?$result->data['id']:''); 

或者,你可以把它放在一個標準,如果塊:

if (isset($result->data['id'])) { echo $result->data['id']; } 

另一種方法,是使一個小小的

function echoVar(&$input=null) { if (isset($input)) { echo $input; } } 

echoVar($result->data['id']); 
echoVar($result->data['name']); 

我沒有真正使用的迷你功能的方法,所以我不能說:漂浮有關您重用輔助函數當然如果它真的更容易些,因爲它確實會遮住你的代碼,以後再讀它。

有一點需要注意的是,isset可以採用完整的嵌套變量,並且它會一步步檢查。您不需要在預期值的每個級別上連續扣三個issets。

1
if (!empty($result->data['id'])) { 
echo $result->data['id']; 
} 
+0

什麼如果他的值已設置,但它是故意的(或零)?使用'empty()'也不行。 – IncredibleHat

+0

如果它是空的,他不能迴應它。我抓住了一個事實,他的數據ID號碼不會爲零 – miknik

+0

對,我想以爲ID不應該是空的(希望!)。但是,如果他要爲各種事情使用「速記」,當一個零點想要輸出時,它可能會讓他絆倒在路上。 – IncredibleHat

相關問題