使用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
相关产品推荐
相关产品推荐

