在foreach中排除空值

时间:2018-03-21 10:17:32

标签: php foreach null

我需要使用foreach从数组中排除NULL值,但它实际上不起作用:

   foreach ($node->field_fichier_joint as $key => $fichier) {
       //Ne pas afficher les champs vides du tableau
       if ($fichier !== NULL):
           print 'debug de $fichier'.$fichier;
           print '<li>'.$node->field_fichier_joint[$key]['view'].'</li>';
       endif;
   }

这会产生空LI:

    <ul>
   <li>
      <div class="filefield-file clear-block">
            <img class="filefield-icon field-icon-application-pdf" alt="icône application/pdf" src="sites/all/modules/filefield/icons/application-pdf.png">
            <a href="sites/all/media/contenu_international/cal_2sec_20112012.pdf" type="application/pdf; length=39748" title="cal_2sec_20112012.pdf" target="_blank">Fichier test pdf</a>
        </div>
   </li>
   <li>
        <div class="filefield-file clear-block">
            <img class="filefield-icon field-icon-application-pdf" alt="icône application/pdf" src="/sites/all/modules/filefield/icons/application-pdf.png">
            <a href="/sites/all/media/contenu_international/bac_tehno_stg.pdf" type="application/pdf; length=106449" title="bac_tehno_stg.pdf" target="_blank">Fichier test pdf 2</a>
        </div>
   </li>
   <li></li>
   <li></li>
   <li></li>
   <li><a href="https://info.erasmusplus.fr/" target="_blank">Un site internet</a></li>
</ul>

缺少什么?

由于

编辑: var_dump($fichier);给出一个:array(1) { ["view"]=> string(0) "" } 所以我需要过滤空值,而不是NULL值。道歉。

EDIT2:最终工作代码

 foreach ($node->field_fichier_joint as $key => $fichier) {
           //Ne pas afficher les champs vides du tableau
           if (!empty($fichier['view'])):
             //  print 'debug de $fichier'.$fichier;
               print '<li>'.$node->field_fichier_joint[$key]['view'].'</li>';
           endif;
       }

4 个答案:

答案 0 :(得分:1)

因此,只需使用empty函数检查值是否为空:

foreach ($node->field_fichier_joint as $key => $fichier) {
   //Ne pas afficher les champs vides du tableau
   if (!empty($fichier['view'])):
       print '<li>' . $fichier['view'] . '</li>';
   endif;
}

答案 1 :(得分:0)

您可以查看$node->field_fichier_joint[$key]['view']

的内容
  foreach ($node->field_fichier_joint as $key => $fichier) {
               //Ne pas afficher les champs vides du tableau
               if ($fichier !== NULL):
                   print 'debug de $fichier'.$fichier;
                print   (isset($node->field_fichier_joint[$key]['view'])) 
                       ?  '<li>'.$node->field_fichier_joint[$key]['view'].'</li>'
                       : '';

            endif;
           }

或B.Desai建议使用empty()检查空字符串

  foreach ($node->field_fichier_joint as $key => $fichier) {
               //Ne pas afficher les champs vides du tableau
               if ($fichier !== NULL):
                   print 'debug de $fichier'.$fichier;
                print   (!empty($node->field_fichier_joint[$key]['view'])) 
                       ?  '<li>'.$node->field_fichier_joint[$key]['view'].'</li>'
                       : '';

            endif;
           }

答案 2 :(得分:-1)

只需filter NULL个值:

$values = array_filter($node->field_fichier_joint, 'is_null');

foreach ($values as $key => $fichier) {
     ...
}

答案 3 :(得分:-3)

foreach ($node->field_fichier_joint as $key => $fichier) {

                   if ($fichier == NULL):
                       continue;
                    print '<li>'.$node->field_fichier_joint[$key]['view'].'</li>';
                endif;
               }