Werte in ein Multidimensionales Array schreiben

MiMi

Erfahrenes Mitglied
Hi,

ich bins mal wieder, also erstma ich hab nen Programm was mir per POST XML Daten schickt, diese Les ich dann per PHP aus und die sollen dann in ein Array gespeichert werden. Den ersten Teil bekomm cih auch super hin, jedoch den 2. net

Mein Code:
PHP:
function handleChilds( &$element ){
    $data = array();
    $choiceArray = array();
    $attributesArray = array();
    $child = $element->first_child();

    while ($child) {
        if (!($child->is_blank_node()) ) {
            switch ($child->node_type()) {
                case XML_TEXT_NODE:
                    echo "XMLtext childvalue: ".$child->node_value() ."\n";
                    $parent = $child->parent_node();
                    echo "XMLtext parentnode: ". $parent->node_name() . "\n";
                    break;
                case XML_ELEMENT_NODE:
                    echo "XMLelement childname: ". $child->node_name() ."\n";
                    $parent = $child->parent_node();
                    echo "XMLelement parentname: ". $parent->node_name() ."\n";
                    if($child->has_attributes() ){
                        $attributes = $child->attributes();
                        foreach ($attributes as $attribute) {
                            echo "name: ". $attribute->name() ."\n";
                            echo "value: ". $attribute->get_content() ."\n";
                            if ($attribute->name() == "ID") {
                                $nextChild = $child->first_child();
                                if ($nextChild->type == XML_TEXT_NODE){
                                    $choiceArray[$attribute->get_content()] = $nextChild->node_value();
                                }
                            } else {
                                $attributesArray[$attribute->name()] = $attribute->get_content();
                            }
                        }
                        $field = $child->node_name();
                        if (sizeof($attributesArray) > 0)
                            $data[$child->node_name()]= $attributesArray;
                    }
                    break;
            }
            if ($child->has_child_nodes()) {
                handleChilds($child);
            }

        }
            echo "CURRENT \n";
            print_r($attributesArray);
            //if(sizeOf($choiceArray) > 0 ) {//&& sizeOf($attributesArray) > 0) {
                echo "ADD \n";
                print_r($choiceArray);
                $result = array_merge($attributesArray, $choiceArray);
           // }
        $child = $child->next_sibling();
    }
//    print_r($data);
    return $data;
}

So nun moechte ich eigentlich das das attributeArray mit dem choiceArray verbinden, nur bei jedem Durchlauf in der While schleife ist wieder das jewilige andere array leer, wie kann denn sowas sein?!
Meine Logik ist es eigentlich wenn ich UEBER der while schleife ein array definiere, und es dann in der while schleife beim 1. Durchgang aender, beim 2. aber nicht, das es beim 2. die DAten aus dem 1. Durchgang enthaelt

Hier meine Ausgabe:

Code:
CURRENT 
Array
(
)
ADD 
Array
(
)
CURRENT 
Array
(
)
ADD 
Array
(
    [1] => choose11111111 11111111111111
)
CURRENT 
Array
(
    [Scenetype] => sc2
    [title] => Nu flop stemmen ! ! !
)
ADD 
Array
(
)

Erst sind beide leer
dann ist current(attributeArray) leer, aber im add (choiceArray) ist was drin
danach ist im current(attributeArray ) was drin, und das add (choiceArray) ist leer

Hab ich nen Denkfehler?! Funktioniert das einfach so in PHP net mit den Variablen?

Danke fuer euere Hilfe
 
Zurück