Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] array() und Hashes

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • intensivstation
    hat ein Thema erstellt [Erledigt] array() und Hashes.

    [Erledigt] array() und Hashes

    Mir ist nicht ganz klar, wann man array() benutzen soll/muss.
    Vielleicht kann jemand für Aufklärung sorgen. Wäre dankbar.
    Hier mal ein Beispiel:
    PHP-Code:
    $ansArray = array();
    for (
    $j=1$j<10$j++){
        
    $qid = {irgendeine Zahl};
        
    $i = {bla foo};
        
    $ansArray[$qid][$i]++;                                
        
    $ansArray[$qid]['votes']++;
        
    $ansArray[$qid]['xyz'] = {dies und jenes};

    PS: {irgendwas} ist irgendeine Variable.
    Haben wir hier nun Arrays oder Hashes? Sind alles Hashes?
    Braucht man nie array() zu benutzen?
    Jedenfalls habe ich festgestellt, dass es keine gute Idee ist, das hier zu machen:
    PHP-Code:
    $ansArray[$qid] = array(); 
    Dann wird nur noch $ansArray[$qid]['xyz'] gefunden. Was geht da dann schief?

  • nikosch
    antwortet
    Was soll denn dieser kryptische Mist? Wenn Du eine Frage hast, dann stell sie mit echten Werten und konkreten Beispielen! Kein Mensch weiß, was DU willst.

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Keine Ahnung wo du es bei dir eingebaut hast. Aber bevor $ansArray[$qid] nicht initialisiert ist macht es schon es mit array() vor zu belegen. Danach macht es nur dann Sinn wenn du nen leeres Array brauchst.

    Einen Kommentar schreiben:


  • intensivstation
    antwortet
    so, so

    OK, es macht also Sinn, das hier zu machen:
    PHP-Code:
    $ansArray[$qid] = array(); 
    Aber das ist eben auch nicht immer gut, z.B. falls die $qid mehrmals dran kommt. Bei meinem Beispiel kann man ja schon erahnen, dass das der Fall ist.
    Ich mach es nun so:
    PHP-Code:
    if (!is_array($ansArray[$qid])) $ansArray[$qid] = array(); 
    OK?

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Ich weiß noch nicht genau was du gemacht hast. Wo hast du denn array() angewendet?

    Hashes gibt es so gesehen in PHP nicht. Ein Array besteht immer aus einem Key und einem Value. Du wirst wahrscheinlich den Key mit einem Hash verwechseln. Da PHP aber assoziative Arrays unterstützt braucht man keine Hashes.

    "array()" verwendet man um eine Variable zu initialisieren. In deinem Beispiel würde es schon Sinn machen es zu verwenden:

    PHP-Code:
    $ansArray = array();
    for (
    $j=1$j<10$j++){
        
    $qid = {irgendeine Zahl};
        
    $i = {bla foo};
        
    $ansArray[$qid] = array(); // hier wird die Variable initialisiert (es ist wieder ein Array)
        
    $ansArray[$qid][$i]++;                                
        
    $ansArray[$qid]['votes']++;
        
    $ansArray[$qid]['xyz'] = {dies und jenes};

    Nach der Initialisierung kannst du dann beliebige Key => Value Paare ins Array schreiben. Davor ist PHP nicht bekannt das $ansArray[$qid] wieder ein Array sein soll (ist ja noch gar nicht initialisiert). Funktionieren tut es aber trotzdem da PHP das automatisch als Array anlegt, sauber ist es aber trotzdem es erst zu initialisieren.

    Würdest du array() benutzen nachdem du schon einzelne Key => Value Paare in $ansArray[$qid] geschrieben hast wird diese Variable wieder durch ein leeres Array ersetzt/neu initialisiert.

    Einen Kommentar schreiben:


  • intensivstation
    antwortet
    OK

    Ja, da war ich schon. Da wird immer array() benutzt.
    Soll also heissen, man soll immer array() benutzen, weil ein Hash auch nur ein Array ist.
    Ich denke ich weiss jetzt auch warum mir
    PHP-Code:
    foreach ($ansArray[$qid] as $key => $value
    zuwenig ausgegeben hat. Ich habe wohl array() zu oft in ner Schleife benutzt und vorherige Werte ins Nirvana geschickt.

    Einen Kommentar schreiben:


  • wolf29
    antwortet
    Hier findest Du die Antworten zu deinen Fragen:

    infos24 PHP ->Arrays und Hashes

    Wolf29

    Einen Kommentar schreiben:

Lädt...
X