не инициализировать переменную, если isset возвращает false

У меня есть такое простое утверждение:

$data['title']  =   isset($domain['title']) ? $domain['title'] : '';

Хорошо. Затем массив данных используется в запросе на вставку с использованием активной записи codeigniter. Теперь я хотел спросить, есть ли способ, которым, если isset возвращает false, не инициализируйте $data['title'].

Я знаю альтернативу здесь

if(isset($domain['title'])){
   $data['title'] = $domain['title'];
}

Я хочу знать, как мы можем сделать то же самое if с верхней инструкцией?


person Muhammad Raheel    schedule 30.07.2012    source источник
comment
Это плохой случай для использования тернара. Любое решение, позволяющее вам выполнить это выражение в троичном коде, будет в лучшем случае неясным и запутанным кодом.   -  person Daniel Nill    schedule 30.07.2012


Ответы (3)


Вы могли бы сделать это, но использование if более читабельно.

isset($domain['title']) && ($data['title'] = $domain['title']);

Изменить: пример использования цикла.

foreach (array('title', 'body', 'footer') as $key) {
  if (isset($domain[$key])) {
   $data[$key] = $domain[$key];
  }
}
person xdazz    schedule 30.07.2012
comment
но если у меня 7 или 8 полей, я буду использовать 7 или 8, если s?? мне нужна простая строка кода для обработки. с иголочки - person Muhammad Raheel; 30.07.2012
comment
@raheelshan Вы можете использовать цикл. - person xdazz; 30.07.2012
comment
можешь привести пример цикла - person Muhammad Raheel; 31.07.2012

Самый короткий способ, которым я могу это сделать, это:

if (isset($domain['title'])) $data['title'] = $domain['title'];

Но придерживайтесь второго примера, он более читаем.

person Michael Robinson    schedule 30.07.2012

ну вы можете сделать:

$data['title'] = !isset($domain['title'] ? : $domain['title'];

В php 5.3 или новее.

Но я бы не рекомендовал это, так как это уродливый запутанный код.

person Daniel Nill    schedule 30.07.2012