Как я могу упростить приведенный ниже код?
$ meta = get_post_meta ($ post-> ID, ‘fields’, true);
if ((isset ($meta['test1'])) || (isset ($meta['test2'])) || (isset ($meta['test3'])) || (isset ($meta['test4'])) || (isset ($meta['test5'])) ){ // do this }
Заранее спасибо!
Если вы имеете в виду ваш код в целом, то нет, он не станет намного проще.
Однако, если вы просто хочу это if
заявление, чтобы выглядеть немного проще, это не проблема, просто сделайте проверку выше:
$metaSet = isset ($meta['test1']) || isset ($meta['test2']) || isset ($meta['test3']) || isset ($meta['test4']) || isset ($meta['test5'])
if($metaSet){ /*..*/ }
Или вы можете сделать что-то более умное: создать массив потенциальных ключей, отобразить массив в целое число, 0, если он существует, 1, если его нет. Суммируйте массив, и если он больше 0, то устанавливается хотя бы один из указанных ключей:
$keys = Array('test1', 'test2', 'test3', 'test4', 'test5'); // Update with potentials
if(atLeastOneIsSet($keys, $meta)){ /*..*/ }
function atLeastOneIsSet($a, $m){
$metaSet = array_sum(array_map(function($k) use ($m){
return (int)isset($m[$k]);
}, $a)) > 0;
return $metaSet;
}
Вы можете просто использовать имя переменной в isset (), она вернет false, если переменная имеет нулевое значение
if($meta['test1'] or $meta['test2'] or $meta['testn']){
/*do stuff*/
}
Это распространено на каждом языке.
@Anil Ваш вопрос не очень подробный. Итак, я предполагаю, что $meta
это то, что вам нужно.
То, что вы сделали до сих пор, это просто проблема в том, что вы не следовали стандартам кодирования PHP.
Используйте что-то вроде ниже:
if( isset ($meta['test1'])
|| isset ($meta['test2'])
|| isset ($meta['test3'])
|| isset ($meta['test4'])
|| isset ($meta['test5'])
) {
// do this
}
Чтобы узнать больше о стандартах кодирования, пожалуйста, посетите этот.