2016-12-12 10 views
2

で基本的なチェックが存在するかどうかのチェックの短い方法:本当に冗長な感じ、私が今求めている配列要素が存在する場合は、配列の値はPHP

$foo = isset($country_data['country']) ? $country_data['country'] : ''; 

をそれを行うには短い方法はありますか?私は変数を使用すると、このような何かを行うことができますことを知っている...

$foo = @$country_data['country'] 

をしかし、それは間違って何とかようだ:

$foo = $bar ?: ''; 

私は@でエラーを抑えることができしかし、それはisset()で動作しません。

答えて

4

PHP7ではnull coalescing operator ??を使用できます。

チェーン内で最初のnull以外の値をとります。

​​

それは同じことが

$foo = isset($country_data['country']) ? $country_data['country'] : ''; 

を行うようだとも、あなたは、チェーンはさらに次のことができます。

あなたはこれを行うことができます。

たとえば、あなたは多くの配列インデックスで試すことができます。

$foo = $country_data['country'] ?? $country_data['state'] ?? $country_data['city'] ?? ''; 

すべての項目は、(!isset())nullである場合、それは最後に空の文字列を取りますが、それらのいずれかが存在する場合、チェーンそこで止まるでしょう。

あなたは(あなたがすべき)、あなたは私がthis answerで見つかったこの機能を使用することができますPHP7持っていない場合:PHP 7にアップデートする

function coalesce() { 
    $args = func_get_args(); 
    foreach ($args as $arg) { 
    if (!empty($arg)) { 
     return $arg; 
    } 
    } 
    return NULL; 
} 

$foo = coalesce($country_data['country'], ''); 
+0

もう一つの理由を。 –

関連する問題