У меня есть проект, который мне нужен 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 (); Исеть ();
Вы можете передать массив, ключ и значение по умолчанию в функцию:
public function getValue($array, $key, $default = '') {
return isset($array[$key]) ? $array[$key] : $default;
}
$this->getValue($variable, 'key');
Также из моего опыта function get_ifisset(&$var)
не выдает никакой ошибки (я не установил его по умолчанию в ноль).
модифицированная функция @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"));