Bin will be removed on June 1, 2014 in favor of http://gist.github.com. Please save all your pastes before then. So long, and thanks for all the fish!×
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
    function toArray($camelize = true, $depth = 0) {
        $out = $this->attributes;
        $multi = null;
       
        foreach ($this->children as $child) {
            $key = $camelize ? Inflector::camelize($child->name) : $child->name;
            $value = array();
            if (is_a($child, 'XmlTextNode')) {
                $out['value'] = $child->value;
                continue;
            } elseif (isset($child->children[0]) && is_a($child->children[0], 'XmlTextNode')) {
                $value = $child->children[0]->value;
                if ($child->attributes) {
                    $value = array_merge(array('value' => $value), $child->attributes);
                }
                if (isset($out[$child->name]) || isset($multi[$key])) {
                    if (!isset($multi[$key])) {
                        $multi[$key] = array($out[$child->name]);
                        unset($out[$child->name]);
                    }
                    $multi[$key][] = $value;
                } else {
                    $out[$child->name] = $value;
                }
                continue;
            } elseif (count($child->children) === 0 && $child->value == '') {
                $value = $child->attributes;
                if (isset($out[$key]) || isset($multi[$key])) {
                    if (!isset($multi[$key])) {
                        $multi[$key] = array($out[$key]);
                        //unset($out[$key]);
                    }
                    $multi[$key][] = $value;
                } elseif (!empty($value)) {
                    $out[$key] = $value;
                } else {
                    $out[$child->name] = $value;
                }
                continue;
            } else {
                $value = $child->toArray($camelize);
                if (!isset($out[$key])) {
                    $out[$key] = $value;
                } else {
                    if (!isset($multi[$key])) {
                        $multi[$key] = array($out[$key]);
                    }
                    $multi[$key][] = $value;
                }
            }
        }
 
        if (isset($multi)) {
            $out = array_merge($out, $multi);
        }
        return $out;
    }