Als ik 1 zin heb kan ik hem uitlezen als $xPhraseset['phraseset']['_c']['phrase'], maar als er meerdere zijn krijg je ['phrase'][0], ['phrase'][1] etc...
Ik wil dat deze altijd op die 2e manier gedaan word, maar wat ik ook aanpas, hij doet het gewoon niet :s
Hoi ToySoldier, zou je je vraag misschien kunnen verduidelijken? Evt wat code posten. Als je met arrays werkt gebruik je foreach. Je kunt een lege string aanmaken en deze doormiddel van een foreach of een while(als uit db komt) vullen en zo xml bestandje maken.
Je hebt wat ik wil niet helemaal begrepen; Ik gebruik deze functie om een XML bestand uit te lezen en om te zetten in een array. Ik heb de functie echter ook maar ergens van het internet afgeplukt. Als een xml-setje (zoals in mijn voorbeeld 'phraseset') 1 element heeft dan staat dan kan je hem uitlezen als $xResultaat['phraseset']['_c']['phrase'], maar als hij meerdere resultaten heeft dan kan je hem uitlezen als $xResultaat['phraseset']['_c']['phrase'][0], $xResultaat['phraseset']['_c']['phrase'][1] etc...
Mijn bedoeling is dat hij hem altijd op die 2e manier zet, dus altijd bij $xResultaat['phraseset']['_c']['phrase'][0] begint, i.p.v. bij $xResultaat['phraseset']['_c']['phrase'].
Ik weet zeker dat het beter en handiger kan, maar ik heb misschien een oplossing:
op regel 89 staat $this->_del_p( $aMNArray );
die functie verwijdert alle ... hoe heten die dingen ook alweer..
als je nog zo'n functie maakt die
- checkt of $xResultaat['phraseset']['_c']['phrase'] een array is
- zo ja, gewoon laten voor wat-ie is
- zo nee, doe je zoeits: $xResultaat['phraseset']['_c']['phrase'][0] = $xResultaat['phraseset']['_c']['phrase'];
Hieronder heb ik even snel iets gemaakt dat zou kunnen werken:
<?php
function veranderArray($p_aXMLArray)
{
foreach($p_aXMLArray as $sKey1 => $aValue1)
{
foreach($aValue['_c'] as $sKey2 => $value2)
{
if(!is_array($value2))
{
$p_aXMLArray[$sKey1]['_c'][$sKey2][0] = $value2;
}
}
}
}
?>
@ Huib Donkers
Zoiets werkt vast wel (heb het nog niet geprobeerd) maar ik kom er niet uit waar het in de functie zelf moet staan, want ik heb als het even kan liever dat hij het in de functie direct goed zet (zodat het op verdere niveau's ook nog werkt)
Ik heb zelf wat geprobeerd, ik begin het een beetje te begrijpen. Mijn veranderArray() functie werkt niet. Want $value2 is hoe dan ook een array
"(zodat het op verdere niveau's ook nog werkt)", ja stom daar had ik aan moeten denken...
wat de code betreft snap ik er nog steeds niet veel van...
omdat ik niet eerg veel weet van XML laat staan van de functies xml_parser_create(), xml_parser_set_option, xml_parse_into_struct en xml_parser_free.
Ik ga morgen (of een andere keer verder kijken)
ik geloof dat je ergens tussen regel 49 en 65 wat moet aan passen.
hieronder nog even de functie zoals ik hem nu test en probeer aan te passen:
ik heb het niet uitgebreid getest, ik heb eigenlijk maar een keer getest met een voorbeeldje... maar als je op regel 64 hierboven "$cv = &$aXMLArray[$t][];" ipv "$cv = &$aXMLArray[$t];" zet dan lijkt het te doen wat je wilt.