Использование if (! Empty) с несколькими переменными вне массива - PullRequest
16 голосов
/ 14 февраля 2011

Я пытаюсь отшлифовать некоторый код с помощью функции if(!empty) в PHP, но я не знаю, как применить это к нескольким переменным, когда они не являются массивом (как я должен был сделать ранее), поэтому если у меня есть:

$vFoo       = $item[1]; 
$vSomeValue = $item[2]; 
$vAnother   = $item[3];

Тогда я хочу напечатать результат, только если есть значение.Это работает для одной переменной, поэтому у вас есть:

 if (!empty($vFoo)) {
     $result .= "<li>$vFoo</li>";
 }

Я пробовал что-то вроде

if(!empty($vFoo,$vSomeValue,$vAnother) {
    $result .= "<li>$vFoo</li>"
    $result .= "<li>$vSomeValue</li>"
    $result .= "<li>$vAnother</li>"
}

Но, конечно, это не работает.

Ответы [ 14 ]

0 голосов
/ 16 ноября 2017

Только для записи: array_reduce также работает.

if (!array_reduce($item, function($prev_result,$next) {
    return $prev_result || empty($next); // $prev_result will be initial null=false
})) {
    // do your stuff
}
0 голосов
/ 13 июня 2017

Почему бы просто не так:

foreach(array_filter($input_array) as $key => $value) {
    // do something with $key and $value
}
0 голосов
/ 15 февраля 2011

Ребята, большое спасибо за все ваши ответы, я вроде создал скрипт, основанный на всех наших возможных ответах, который на самом деле помогает мне в изучении синтаксиса PHP, который является причиной большинства моих ошибок :) 1001 *

$vNArray ['Brandon']  = $item[3]; 
$vNArray['Smith']= $item[4]; 
$vNArray ['Johnson']= $item[5];
$vNArray ['Murphy']= $item[6];
$vNArray ['Lepsky']= $item[7];

foreach ($vNArray as $key => $value){

    if(!empty($value)){
        $result  .= "\t\t\t\t<li><strong>$key</strong>"  .$value.   "</li>\n";
}

Мне просто нужно выяснить, как сделать некоторые из них различными. Так могу ли я получить доступ к каждому из них следующим образом?

$result  .= "\t\t\t\t<li><strong>$key[0]</strong>"  .$value. "</li>\n";
$result  .= "\t\t\t\t<li><a href="thislink.com">$key[3]</a>"  .$value. "</li>\n";

Спасибо, ребята!

0 голосов
/ 14 февраля 2011

Я не уверен на 100%, что понимаю, что вы пытаетесь сделать, но вот несколько возможных ответов:

Это вернет каждую переменную, только если она не пуста:

function printIfNotEmpty($var) {
  if (!empty($var)) {
    return '<li>' . $var . '</var>';
  }
  return '';
}
$result .= printIfNotEmpty($vFoo);
$result .= printIfNotEmpty($vSomeValue);
$result .= printIfNotEmpty($vAnother);

Или этот добавит все три из них, если ни один из них не пуст:

if (!empty($vFoo) && !empty($vSomeValue) && !empty($vAnother)) {
  $result .= '<li>' . $vFoo . '</li>';
  $result .= '<li>' . $vSomeValue . '</li>';
  $result .= '<li>' . $vAnother . '</li>';
}
...