Есть ли способ проверить выход ключа массива внутри функции

У меня есть проект, который мне нужен echo $ variable [‘key’];

Иногда $ variable [‘key’] не существует. И эти переменные создают ошибки, когда я повторяю $ variable [‘key’]; непосредственно.

Мой текущий метод

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

И это не очень эффективный способ сделать это. Я не хочу писать все ключи два раза.

Мне нужна функция. В основном это проверяет $ 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 (); Исеть ();

1

Решение

Вы можете передать массив, ключ и значение по умолчанию в функцию:

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

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

Также из моего опыта function get_ifisset(&$var) не выдает никакой ошибки (я не установил его по умолчанию в ноль).

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"));
1

По вопросам рекламы [email protected]