tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
420
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Philipp15b Philipp15b ist offline Rookie
    Registriert seit
    Dec 2010
    Beiträge
    6
    Hallo,
    ich habe ein simpleXML-Dokument in ein Array umgewandelt, jetzt haben aber einige Arrays den Key "@attributes". Wenn ich dieses in Smarty verwenden will, gibt das einen Fatal Error aus.

    Wie also kann ich in einem Array die Keys mit einem "@" ändern?

    MfG,
    Philipp15b
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    PHP-Code:
    //Testarray
    $array = array('@a' => 'A''b' => 'B''@c' => 'C');
    //Die Schlüssel extrahieren
    $keys array_keys($array);
    //In allen Schlüsseln @ durch nix ersetzen
    array_walk($keyscreate_function('&$key''$key = str_replace("@", "", $key);'));
    //Den Array wieder zusammensetzen
    $array array_combine($keys$array);
    print_r($array); 
    Nachtrag:
    Falls es ein verschavhteltes Array ist, ists nur ein klein wenig aufwendiger
    PHP-Code:
    //Testarray
    $array = array('@a' => 'A''b' => 'B''@c' => array('@d' => 'D''e'=>'E'));

    print_r(correctKeysRekursive($array));

    function 
    correctKeysRekursive($array){
        
    //Die Schlüssel extrahieren
        
    $keys array_keys($array);
        
    //In allen Schlüsseln @ durch nix ersetzen
        
    foreach($keys as $index => $key){
            
    //Falls das item ein array ist, darauf ebenfalls diese Funktion anwenden       
            
    if(is_array($array[$key])) $array[$key] = correctKeysRekursive($array[$key]);    
            
    $keys[$index] = str_replace("@"""$key);
        }
        
    //Den Array wieder zusammensetzen
        
    return array_combine($keys$array);

     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Philipp15b Philipp15b ist offline Rookie
    Registriert seit
    Dec 2010
    Beiträge
    6
    Danke, aber leider kriege ich das bei verschachtelten Arrays einfach nicht hin...

    MfG,
    Philipp15b
     

  4. #4
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Vielleicht solltest du mal sagen, was du net hinbekommst. Und woran es scheitert.
    Da sieht man mal wieder, dass fertigen Code posten nix bringt -.-
     
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  5. #5
    Philipp15b Philipp15b ist offline Rookie
    Registriert seit
    Dec 2010
    Beiträge
    6
    Leider tritt jetzt eine Warnung auf:
    Warning: array_combine() [function.array-combine]: Both parameters should have at least 1 element
    Die tritt nur unregelmäßig auf und dabei sind laut var_dump die Arrays leer:
    array(0) {
    }
    MfG,
    Philipp15b
     

  6. #6
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Naja diese Warnung:
    Both parameters should have at least 1 element
    und deine Aussage, das die Arrays leer sind, wuerde mich ueberlegen lassen, ob er mit leeren Arrays nicht klar kommt?
     
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

  7. #7
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Mach mal ein var_dump() auf dein Ursprungsarray und poste das hier. Dann sehen wir mal wie die Ausgangslage ist. Ansonsten können wir auch heiteres Rätselraten veranstallten.

    Nachtrag:
    Du kannst am Anfang auch den array validieren
    PHP-Code:
    function correctKeysRekursive($array){
        if(!
    is_array($array) || count($array)=0) return $array;
        
    //Rest vom Code

     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  8. #8
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Beschämend für mich. Das hat man davon wenn man Code ungetestet postt. Ist voller Fehler.
    Die neue Zeile muss natürlich so aussehen
    PHP-Code:
        if(count($array)==0) return $array
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 07.11.10, 19:51
  2. Antworten: 7
    Letzter Beitrag: 09.04.10, 20:57
  3. Antworten: 2
    Letzter Beitrag: 12.10.09, 16:31
  4. Handy"Piepen" (diese Frequenzen, wenn man netz sucht) rausfiltern?
    Von Xo-mate im Forum Audiotechnik, Recording & Audio-Software
    Antworten: 6
    Letzter Beitrag: 28.03.07, 08:51
  5. Antworten: 8
    Letzter Beitrag: 01.12.05, 17:13

Stichworte