You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用foreach排除数组NULL值失效,仍生成空<li>标签求助

解决foreach循环中排除空值仍生成空
  • 标签的问题
  • 看起来你明明加了$fichier !== NULL的判断,却还是生成了空的<li>标签对吧?这大概率是因为你判断的对象不对——$fichier本身可能不是NULL,而是一个空数组或者内部view字段为空的数组,所以你的条件根本没拦住它。

    先搞清楚问题根源

    你可以先在循环里加一行调试代码,看看$fichier的真实结构:

    print '<pre>' . print_r($fichier, true) . '</pre>';
    

    大概率你会看到$fichier是一个完整的数组,只是里面的view字段是空字符串或者空的HTML结构,而$fichier本身并不是NULL,所以$fichier !== NULL这个条件会一直为真,导致空的<li>被输出。

    修改后的代码方案

    既然我们要过滤的是最终要输出的view内容,直接针对这个字段做判断更靠谱:

    foreach ($node->field_fichier_joint as $key => $fichier) {
        // 检查view字段是否存在且非空
        if (isset($fichier['view']) && !empty($fichier['view'])):
            print 'debug de $fichier: ' . print_r($fichier, true);
            print '<li>' . $fichier['view'] . '</li>';
        endif;
    }
    

    这里用isset()确保view键存在,再用!empty()判断内容是否非空,这样就能精准过滤掉那些view为空的项,不会生成空的<li>标签了。

    额外提示(针对Drupal场景)

    从你的代码里的$node->field_fichier_joint来看,这应该是Drupal的文件字段。Drupal的多值字段即使某个值为空,也会保留完整的数组结构,所以直接判断整个$fichier是否为NULL完全没用,必须针对字段里的具体内容(比如view或者fid)做判断。

    内容的提问来源于stack exchange,提问作者webmaster pf

    相关产品推荐
    方舟 Agent Plan

    超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

    最近更新时间:2026.05.20 11:35:43