Implode in einem foreach loop ?

Code46

Erfahrenes Mitglied
Hi Leute,

die webseite die ich gerade gestallte, liste alle Werte aus dem XML und listed die dann in einer Tabelle. Jedoch möchte ich alle ChildNodes mit einem Komma abtrennen.

Code:
<parent>
 <child>1</child>
 <child>1</child>
 <child>1</child>
 <child>1</child>
<parent>
<parent>
 <child>1</child>
 <child>1</child>
 <child>1</child>
 <child>1</child>
<parent>
<parent>
 <child>1</child>
 <child>1</child>
 <child>1</child>
 <child>1</child>
<parent>

So ungefähr sieht meine XML Datei aus die aus 20 Parent Nodes besteht. Wenn ich dies in einem array speicher und dann ausgebe addiert er alle miteinander. Also bekomme ich alle childNodes in dem letztem node was ich auch nicht möchte.

Code:
$list_features = array();
   
  foreach ($nodes as $tag) 
  {
	  
     $list_features[]= $tag->nodeValue;
	 $a = implode(',',$list_features);
    echo $a;
 
  }

Was denn so aussieht:

Code:
 SilberSilber,Silber,,Silber,,,SchwarzSilber,,,Schwarz,Silber,,,Schwarz,,Silber,,,Schwarz,,,SilberSilber,,,Schwarz,,,Silber,Silber,,,Schwarz,,,Silber,,Silber,,,Schwarz,,,Silber,,,SilberSilber,,,Schwarz,,,Silber,,,Silber,Silber,,,Schwarz,,,Silber,,,Silber,,Silber,,,Schwarz,,,Silber,,,Silber,,,SilberSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,RotSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,SchwarzSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,SilberSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,SchwarzSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,SchwarzSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,SchwarzSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,SchwarzSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,SchwarzSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,BlauSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,SchwarzSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,WeißSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,WeißSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,Weiß,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,Weiß,,WeißSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,Weiß,,Weiß,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,Weiß,,Weiß,,WeißSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,Weiß,,Weiß,,Weiß,Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,Weiß,,Weiß,,Weiß,,WeißSilber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,Weiß,,Weiß,,Weiß,,Weiß,

So sieht es ohne Komma aus:
Code:
SilberSchwarzSilberSilberSilberRotSchwarzSilberSchwarzSchwarzSchwarzSchwarzSchwarzBlauSchwarzWeißWeißWeißWeißWeiß


Wenn ihr mir weiterhelfen könntet, würde ich mich sehr freuen.

DANKE :D
 
Zuletzt bearbeitet:
PHP:
$list_features = array();
   
  foreach ($nodes as $tag) 
  {
     $list_features[]= $tag->nodeValue;
  }
     $a = implode(',',$list_features);
    echo $a;

;)
 
Jetzt sieht das so aus
Code:
Silber,,,Schwarz,,,Silber,,,Silber,,,Silber,,,Rot,,Schwarz,,,Silber,,,Schwarz,,Schwarz,,Schwarz,,,Schwarz,,,Schwarz,,,Blau,,,Schwarz,,,Weiß,,Weiß,,Weiß,,Weiß,,Weiß,


Was eigentlich so aussehen soll

Code:
Silber,Schwarz,Silber,Silber,Silber,Rot,Schwarz,Silber,Schwarz,Schwarz,Schwarz,Schwarz,Schwarz,Blau,Schwarz,Weiß,Weiß,Weiß,Weiß,Weiß
 
Zuletzt bearbeitet:
Hallo,

vermutlich hat dein Array $list_features leere Elemente. Ansehen könntest du das mit der Funktion print_r(). Also:
PHP:
print_r($list_features)
Um die leeren Elemente aus dem Array zu entfernen könntest du die Funktion array_filter() verwenden.
 
Hi,

erstmal, dein XML ist nicht valide. Die parent-Tags gehen zwar auf aber keines wieder zu. Wenn dein XML wohlgeformt wäre, könnte man das bspw. so lösen:

PHP:
<?php
$dom = new DOMDocument();
$dom->load('test2.xml');

$xpath = new DOMXPath($dom);

$childs = $xpath->query('/parents/parent/child');

$childString = null;
foreach($childs as $child)
{
	$childString .= ($childString ? "," : "") . $child->nodeValue;
}

echo $childString;

Hier ist das XML, das ich zum Testen verwendet habe:

XML:
<?xml version="1.0" encoding="UTF-8"?>
<parents>
	<parent>
		<child>1</child>
		<child>1</child>
		<child>1</child>
		<child>1</child>
	</parent>
	<parent>
		<child>1</child>
		<child>1</child>
		<child>1</child>
		<child>1</child>
	</parent>
	<parent>
		<child>1</child>
		<child>1</child>
		<child>1</child>
		<child>1</child>
	</parent>
</parents>
 
Zurück