我正在尝试确定使用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 . "\"" . ",";
}
}
答案 0 :(得分:5)
您可以使用:
$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);
答案 1 :(得分:1)
$cols->length
应该为您提供列表中的项目数
for ($i = 0; $i < $cols->length; $i++) {
// ...
if ($i == $cols->length - 1) {
// last column