Hallo allemaal,

Ik heb een script dat middels simplexml_load_file() een XML file doorloopt en items in een database insert.
Echter heb ik afhankelijk van de XML feed een andere loop. Hoe kan ik dit het beste oplossen. Eigenlijk komt het er op neer dat ik meerdere foreach loops heb die ik wil samen voegen en middels bijvoorbeeld 1 variable wil kunnen aanpassen aan de situatie. Zie onderstaand:


foreach ($xml_load->product as $items) {

}


foreach ($xml_load->programs->program->products->product as $items) {

}


- - - -

Mijn eerste gedachte was zoiets als onderstaand. Maar dat werkt niet.

if($case = 1) {
$loop_variable = 'programs->program->products->product';
} else {
$loop_variable = 'product';
}

foreach ($xml_load->$loop_variable as $items) {

}


Mijn tweede gedacht was zoiets, ook dat werkt niet :)

if($case = 1) {
foreach ($xml_load->programs->program->products->product as $items) {
} else {
foreach ($xml_load->product as $items) {
}
Zet het foreach deel in een function, en geef hetgeen waar je overheen wilt loopen mee als parameter:
<?php

function do_the_loop($array){
  foreach($array as $items){
    //doe ding
  }
}


do_the_loop($xml_load->programs->program->products->product);
do_the_loop($xml_load->product);

?>

Maakt de boel meteen een stuk overzichtelijker omdat je niet een heel stuk alles-in-een spaghetti hebt!
Super! Dank voor de duidelijk reactie. We hebben het op die manier ingebouwd. Dan een vervolg vraag. Op dit moment heb ik dus 2 do_the_loop's.

Voor de ene XML feed wordt deze gebruikt:
do_the_loop($xml_load->programs->program->products->product);


Voor de andere XML feed:
do_the_loop($xml_load->product);



Beide feeds staan opgeslagen als records in een database. Ik zou bij die records graag opslaan welke van de 2 do_the_loop gebruikt moet worden.

Wat is de beste manier om:
do_the_loop($xml_load->programs->program->products->product);

of
do_the_loop($xml_load->product);


Op te slaan als waardes in een MYSQL database? Overigens is moet het ook mogelijk zijn om nog een variant te hebben. Het zijn dus geen vaste waardes. Ze verschillen per feed.

Reageren