PHP Foreach döngü ve DOMNodeList

2 Cevap php

Ben DOMNodeList bir koleksiyon ile ekildi bir foreach döngüsünün sonunu belirlemek için çalışıyorum. Şu anda, ben döngü için bir kullanıyorum orada bir 'sihirli' numarasına sahip önlemek istiyorum. Ben sadece 8 sütun olacaksa olacak biliyorum, ama ben diğer uygulamalar için beni jenerik kodu istiyorum.

Bir Foreach döngü bu dönüştürmek mümkün mü? Ben ucu () ve sonraki () fonksiyonlarını denedim, ama hiçbir veri iade edilmez ve ben sadece diziler ve bu DOMNodeList koleksiyon değil üzerinde çalışmak olduğunu sanıyorum.

Kodu ',' firar olmadan bir CSV dosyası kuruyor

Akım çıkışı:

"Değer 1", "Değer 2", "Değer 3", "Değer 4", "Değer 5", "Değer 6", "Değer 7", "Değer 8"

İşte kod bir örnektir:

$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 . "\"" . ",";
   }
}

2 Cevap

Sen kullanabilirsiniz:

$cols->length

Bir DOMNodeList öğelerin sayısını almak için.

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

Edit: If you change you're code to this, you don't have to worry about the trailing comma, or the length:

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

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

Eğer listedeki öğelerin sayısını vermelidir

for ($i = 0; $i < $cols->length; $i++) {

// ...

if ($i == $cols->length - 1) {
// last column