在foreach中排除空值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在foreach中排除空值相关的知识,希望对你有一定的参考价值。

我需要使用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;
       }
答案

因此,只需使用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;
}
另一答案

你可以查看$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;
           }
另一答案

只是filter NULL价值观:

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

foreach ($values as $key => $fichier) {
     ...
}
另一答案
foreach ($node->field_fichier_joint as $key => $fichier) {

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

以上是关于在foreach中排除空值的主要内容,如果未能解决你的问题,请参考以下文章

Ext JS 在摘要中排除空值 Ext.grid.feature.Summary 在网格中

如何从 Mongoose 填充查询中排除空值

为啥我在 Flutter 中使用 Firestore 中的 foreach 方法后得到空值?

如何使 .populate 排除空值?

Python3的map函数中排除空值

Kotlin - 如何将空值传递给片段 newInstance 方法?