微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP Foreach循环和DOMNodeList

我试图确定一个使用DOMNodeList集合播种的foreach循环的结束.目前,我正在使用for循环,希望避免在那里有一个“魔术”数字.我知道只有8列,但我希望代码对于其他应用程序来说是通用的.

是否可以将其转换为Foreach循环?我已经尝试了end()和next()函数,但它们没有返回任何数据,我怀疑它们只能处理数组而不是DOMNodeList集合.

代码正在构建一个没有尾随’,’的CSV文件

目前的输出是:

“值1”,“值2”,“值3”,“值4”,“值5”,“值6”,“值7”,“值8”

这是一个代码示例:

$cols = $row->getElementsByTagName("td");
$printData = true;

// Throw away the header row
if ($isFirst && $printData) {
   $isFirst = false;
   continue;
}

for ($i = 0; $i <= 8; $i++) {
   $output = iconv("UTF-8", "ASCII//IGnorE", $cols->item($i)->nodeValue);
   $output2 = trim($output);
   if ($i == 8) {
      // Last Column
      echo "\"" . $output2 . "\"" . "\n";
   } else {
      echo "\"" . $output2 . "\"" . ",";
   }
}

解决方法:

您可以使用:

$cols->length

检索DOMNodeList中的项目数.

http://php.net/manual/en/class.domnodelist.php

编辑:
如果您将代码更改为此代码,则无需担心尾随逗号或长度:

$output = array();
foreach ($cols as $item) {
   $output = iconv("UTF-8", "ASCII//IGnorE", $item->nodeValue);
   $output2 = trim($output);

   $output[] = '"' . $output2 . '"';
}
$outputstring = implode(',', $output);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐