2012-04-01 2 views
3

Я просто хочу оптимизировать код ниже. Это работает, но я хочу, чтобы увидеть, если кто-то имеет более короткий способ написания следующего условия:PHP, обнаруживающий, что список переменных запроса пуст()

if(
!empty($_REQUEST['shipping_fname']) || 
!empty($_REQUEST['shipping_lname']) || 
!empty($_REQUEST['shipping_address1']) || 
!empty($_REQUEST['shipping_address2']) || 
!empty($_REQUEST['shipping_city']) || 
!empty($_REQUEST['shipping_state']) || 
!empty($_REQUEST['shipping_zip']) || 
!empty($_REQUEST['shipping_country'])){ 

     /* do stuff in here */ 

} 

Как вы можете видеть, есть некоторые переменный запрос я проверяю. Если какой-либо из них не пуст, я продолжу все остальное. (для тех, кто должен знать, если какая-либо информация о доставке прошла, я сделаю проверку внутри скобок. Иногда кто-то отправляет только первый, последний и почтовый.

Опять же, это работает, просто интересно, имеет более короткую методику

ответ

2

Это будет хуже, производительность, и на самом деле я бы, вероятно, просто придерживаться пути, но менее обременительным альтернативой может быть:.

$arr = array('shipping_fname', 'shipping_lname', '...'); 
$go = false; 
foreach ($arr as $f) { if (!empty($_REQUEST[$f])) { $go = true; break; } } 
if ($go) { ... } 

Вы также можете сделать прочь с $ идти если вы хотите:

$arr = array('shipping_fname', 'shipping_lname', '...'); 
foreach ($arr as $f) { 
    if (!empty($_REQUEST[$f])) { 
     /* do stuff in here */ 
     break; 
    } 
} 
+0

вы делаете хороший момент. Если мой способ будет лучше для производительности, я просто выдержу его. Но мне нравится ваш массив(). – coffeemonitor

+0

Это будет только медленнее. Например, возможно, на второй секунде. И @tq, о чем вы говорите в мире? Как здесь работает in_array? – Corbin

+0

'in_arra()' не работает, потому что он проверяет независимый ключ '$ _REQUEST' –

Смежные вопросы