2017-10-16 35 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

相关问题