在foreach中排除空值

问题描述 投票:-2回答:4

我需要使用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>

缺什么 ?

谢谢

EDIt: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;
       }
php foreach null
4个回答
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;
}

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

-1
投票

只是filter NULL价值观:

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

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

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

                   if ($fichier == NULL):
                       continue;
                    print '<li>'.$node->field_fichier_joint[$key]['view'].'</li>';
                endif;
               }
© www.soinside.com 2019 - 2024. All rights reserved.