PHP en de lastige arrays

Status
Niet open voor verdere reacties.

s5057285

Gebruiker
Lid geworden
16 mrt 2010
Berichten
104
Arrays zijn nooit één van mijn sterkste kanten geweest en zeker niet de multidimensionale arrays.

Het punt is het volgende ik heb een XML bestand met vragen, antwoorden en oplossingen. Hiervoor heb ik een array nodig om het efficiënt op te lossen.
Een vraag wordt gekenmerkt door een ID. Een vraag heeft natuurlijk verschillende antwoorden die ook weer allemaal een eigen ID hebben.
(Om te controleren of de vraag juist is moet je ergens achteraan in het XML-bestand het ID van het antwoord gaan opzoeken.)

Daarom dacht ik aan een volgende array (waarvan ik nog niet zeker weet of ik die net heb uitgevonden...)

PHP:
$vraag['vraagID'] = array(
             'antwoordID' => 'antwoord'
          );

Het enige probleem is natuurlijk dat ik in een foreach zit en dat er telkens aan moet worden toegevoegd...

PHP:
//rondom onderstaande code staat ook nog een foreach voor de items

    //Array[ID of item] containing the possible answers and ID to the answers
    $itemID = $item->attributes()->ident;

    //$question[$itemID] = array();
    foreach ($item->presentation->response_lid->render_choice->children() as $flow_label) {
      $question[$itemID] = array(
          $flow_label->response_label->material->mattext =>$flow_label->response_label->attributes()->ident
          );
    }

Spijtig genoeg krijg ik van PHP te horen dat die array niet echt geldig is. Wat is een mogelijk alternatief?

Groetjes

Joey
 
Op zich is het idee om de antwoorden per ID toe te voegen wel goed.
Ik heb nu niet zo heel goed voor me hoe jij je informatie precies ophaalt maar je zou het als volgt kunnen proberen (let op: code NIET getest!)
PHP:
$result = array();

// Hier je custom XML parser, ik neem een loopje als voorbeeld code
foreach($xml as $row){
    if(!in_array($row['id'], $result)){
         $result[$row['id']] = array();
    }
    $result[$row['id']][] = $row['antwoord'];
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan