2016-03-21 4 views
3

私は多くのオプションフィールドを持つ配列やオブジェクトを扱っています。配列値をチェックするのにPHP @は安全ですか?

$name = isset($revision['data']['name']) ? $revision['data']['name']: null; 

または

$name = isset($revision->data->name) ? $revision->data->name: null; 
$name = isset($revision->data->name) ? $revision->data->name : 'default'; 

が、それは、この特定のケースでは、安全な使用することです(Laravel付き):私はに私を導くPHPエラーを取得せずにフィールドの値をチェックしようとしている

$value = @ $revision['data']['name']; 
$value = @ $revision['data']['name'] ?: 'default'; 

もしそうでない場合、これらの値を処理するにはどうすればよいでしょうか?

ありがとうございます!

答えて

2

エラーが報告されないようにするという意味では安全ですが、それは良い練習とは言えません。 isset@を超えると、より明示的になります。なぜなら、コードは、配列インデックスが設定されているかどうかをチェックしていることを私に伝えているからです。

もう1つの方法は、ヘルパー機能を利用しても構わない場合は、Laravelのarray_getを使用する方法です。この場合、Laravelのヘルパーが未設定のインデックスに対して自動的にnullを返すため、$name = (array_get($revision, 'data.name')) ?: null;があります。手動でデフォルト値を設定することもできますarray_get($array, 'foo.bar', 'default');

+0

ヘルパー関数は素晴らしいようです。また、object_get()関数も使用できます。ありがとうございます ! –

関連する問題