Momenteel loop ik tegen 2 problemen aan:
1. De waardes worden verwisseld.
2. Als een rij geen waarde bevat voor de desbetreffende kolom wordt deze niet overgeslagen in de CSV.
Mijn eerste vraag: Waarom worden de keys van een array_search functie verwisseld.
Dit is mijn script:
<?php
$spec = $product->thirdPartyInfo->specifications->specification;
if (is_array($spec)){
foreach($spec as $specification){
$texualDescription = $specification->textualDescription->_;
$value = $specification->value->_;
$place = array_search($texualDescription, $header);
if($place !== false){
$row[$place] = $value;
echo "place in array: ".$place."Value: ".$row[$place]."<br/>";
}
}
}
?>
Hieronder zie je de resultaten van het draaien ervan:
place in array: 7 Value: Electronic HP Care Pack Support Plus 24 with Comprehensive Defective Material Retention Post Warranty - uitgebreide serviceovereenkomst - 1 jaar - ter plaatse
place in array: 8 Value: Uitgebreide serviceovereenkomst
place in array: 9 Value: Onderdelen en werkuren
place in array: 10 Value: Ter plaatse
place in array: 11 Value: 1 jaar
place in array: 15 Value: 4 uur
place in array: 13 Value: 24 uur per dag / 7 dagen per week
Zoals je kunt zien gaat het toewijzen van de keys verkeerd, er staat 7,8,9,10,11,15,13 terwijl er zou moeten staan: 7,8,9,10,11,13,15
Mijn tweede vraag: Waarom worden lege kolommen niet overgeslagen tijdens het schrijven van de CSV file met fputcsv
Zoals je hierboven in de lijst kunt zien zouden kolom 12 en 14 moeten worden overgeslagen (oftewel leeg moeten blijven) omdat daarvoor in die rij geen waarde beschikbaar is. Maar wat er gebeurt is dat de waarden voor kolommen 13 en 15 worden geplaatst in kolom 12 en 13.
Ik heb geprobeerd een extra komma to te voegen als waarde voor de kolom als er geen match gevonden wordt maar dat werkte ook niet. Zie hieronder mijn code voor dat gedeelte:
<?php
$spec = $product->thirdPartyInfo->specifications->specification;
if (is_array($spec)){
foreach($spec as $specification){
$texualDescription = $specification->textualDescription->_;
$value = $specification->value->_;
$place = array_search($texualDescription, $header);
if($place !== false){
$row[$place] = $value;
echo "place in array: ".$place."Value: ".$row[$place]."<br/>";
}
else($row[$place] = ",");
}
}
?>
Heeft iemand misschien een idee waarom dit niet zo werkt als ik in theorie had bedacht en het liefst ook een oplossing zodat het wel werkt.
Het probleem aanwijzen zou me al een hoop helpen want ik staar me nu al een week blind op dit stukje code en ik kom geen steek verder.
Alvast dank!