4

重複の可能性:
デフォルト値を設定するより簡潔な方法はありますか?

次のような組み込みのphp関数はありますか?

function isset_get($array, $key, $default = null) {
    return isset($array[$key]) ? $array[$key] : $default;
}

私は好きではありません

$my_var = isset($my_array['some Key']) ? $my_array['some Key'] : '';

そして好むだろう

$my_var = isset_get($my_array, 'some Key', '');

または似たようなもの...

4

2 に答える 2

4

いいえ。私のコードベースには、この性質のヘルパーがいくつかあります。名前はかなりひどいですが、頻繁に使用されるため、簡潔にする必要があります

idx($array, $key, $default) !isset($array[$key]) の場合は $default を返します

adx($array, $key, $default) idx と似ていますが、$array が実際には配列であることを強制し、そうでない場合はスローします。

edx($array, $key, $default) !isset($array[$key]) または empty($array[$key]) の場合は $default を返します

于 2012-12-29T23:57:58.730 に答える
2

の使用を検討してくださいarray_merge。マージすると、指定された各配列のキーが上書きされ、デフォルト値の配列を指定された値でオーバーライドできるようになります。

$defaults = array('some Key' => 'some Default Value');
$input = array('some Key' => 'a new value');
$merged = array_merge($defaults, $input);
$value = $merged['some Key'];

ただし、これは数値キーでは正しく機能しないため、ベクターではなくマップを使用していることを確認する必要があります。

于 2012-12-29T23:52:21.250 に答える