Упростить несколько isset

Как я могу упростить приведенный ниже код?

$ 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 }

Заранее спасибо!

-1

Решение

Если вы имеете в виду ваш код в целом, то нет, он не станет намного проще.

Однако, если вы просто хочу это 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;
}
0

Другие решения

Вы можете просто использовать имя переменной в isset (), она вернет false, если переменная имеет нулевое значение

if($meta['test1'] or $meta['test2'] or $meta['testn']){
/*do stuff*/
}

Это распространено на каждом языке.

0

@Anil Ваш вопрос не очень подробный. Итак, я предполагаю, что $meta это то, что вам нужно.

То, что вы сделали до сих пор, это просто проблема в том, что вы не следовали стандартам кодирования PHP.

Используйте что-то вроде ниже:

if(   isset ($meta['test1'])
|| isset ($meta['test2'])
|| isset ($meta['test3'])
|| isset ($meta['test4'])
|| isset ($meta['test5'])
) {
// do this
}

Чтобы узнать больше о стандартах кодирования, пожалуйста, посетите этот.

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