1

$variable['key']; をエコーする必要があるプロジェクトがあります。

$variable['key'] が存在しない場合があります。$variable['key']; をエコーすると、これらの変数はエラーを作成します。直接。

私の現在の方法は

echo (isset($variable['key'])) ? $variable['key'] : '';

そして、これはそれを行うための非常に効率的な方法ではありません。すべてのキーを 2 回書きたくありません。

関数が必要です。基本的にそれは $varible['key']; をチェックします。関数内でその値を返します。

function get_ifisset(&$var = null){
if(isset($var)){ return $var; }
}

echo get_ifisset($vars['key']);

しかし、 $variable['key'] が存在しないため、それらを関数内に送信できません

この種の使用法は、「未定義のキー」であるエラーをスローします。

また、次の関数は、私が気に入らない別のアプローチです。

function get_ifisset($var, $key){
if(array_key_exists($key, $GLOBALS[$var])){ return $GLOBALS[$var][$key]; }
}

関数内の配列キーの存在を確認する方法はありますか。

property_exists(); array_key_exists(); isset();

4

2 に答える 2

1

変更された @Justinas 関数:

public function getValue($array, $key, $default = '') {
    if(!is_array($key)) {
        return isset($array[$key]) ? $array[$key] : $default;
    }
    $arr = & $array;
    foreach($key as $subkey) {
        if(!isset($arr[$subkey])) {
            return $default;
        }
        $arr = & $arr[$subkey];
    }
    return $arr;
}

多次元配列で使用できるように

getValue($array, "key");

getValue($array, Array("key", "subkey", "subsubkey"));
于 2014-12-16T11:34:10.430 に答える
1

関数に配列、キー、およびデフォルト値を渡すことができます。

public function getValue($array, $key, $default = '') {
    return isset($array[$key]) ? $array[$key] : $default;
}

$this->getValue($variable, 'key');

また、私の経験から、function get_ifisset(&$var)エラーはスローされません(デフォルトをnullに設定していません)。

于 2014-12-16T11:27:52.823 に答える