mehrdimensionales hash array

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

  • mehrdimensionales hash array

    Hallo Zusammen,
    nachdem ich jetzt schon um Forum und Googel geschaut habe
    aber nicht finden konnte, hätte ich eine Frage zu einem Array. Besteht die Möglichkeit ein mehrdimensionales Hash Array das wie folgt aussehen soll zu erstellen

    PHP-Code:
    $array[$cat_id][$path][$sort
    Ich möchte alle 3 Variablen abrufen können.
    Über Tipps und Lösungsansätze wäre ich dankebar!

  • #2
    antwort: ja
    vorschlag: mach dir mal gedanken über die fragestellung
    tipp: somit weist du den keys den variablenwert zu. ob es erwünscht ist, weiß ich nicht, kann es aber anzweifeln. vielleicht soll der variablenwert ja doch der wert (value) sein, der zu einem schlüsselnamen (key) gehört?

    Kommentar


    • #3
      Ich benötige das Array um aus einem Textfile das mehrere Zeilen beinhaltet
      über einen split 3 Werte zusammengehörende Werte in das Array zu laden.
      Der erste Wert soll eine Kategorie ID sein. Diese ID soll mit anderen Daten
      aus einer DB verglichen werden und jeweils dem Datensatz mit der gleich
      Kategorie ID (mehrfach vorkommend) zugewiesen werden - damit der Inhalt des Arrays ausgegeben werden kann ($cat_id, $path und $sort)
      Mir ist der Ansatz leider noch nicht ganz klar.....

      Kommentar


      • #4
        du hast die idee mehrerer array-dimensionen nicht richtig verstanden.
        es würde reichen, wenn dein array 2 (auch eine relative bezeichnung) dimensionen hätte:

        PHP-Code:
        $arr[0]['catid'] = 7//erste zeile
        $arr[0]['path'] = "foo";
        $arr[0]['sort'] = true;

        $arr[1]['catid'] = 8//zweite zeile
        $arr[1]['path'] = "bar";
        $arr[1]['sort'] = false;

        //etc. 
        würde doch reichen, oder?

        Kommentar


        • #5
          So ist es mir auch bekannt. Da ich aber das Array "foreach" Datensatz aus der DB nach der passenden cat_id durchsuchen möchte (die in der DB mehrfach vorkommt) und m.E. nur schlecht mit einem increment arbeiten
          kann um das Array zu durchlaufen denke ich dass es so nicht funktionieren würde?!?! Aus diesem Grund wollte ich die cat_id als Key nutzen und diesem 2 Values zuweisen damit im Array gesucht werden kann. Vielleicht funktioniert das so garnicht... kein Ahnung

          Kommentar


          • #6
            Du darfst an Stelle von [0] und [1] bitte [$catid] benutzen
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Danke!Das war meine erste Frage. Aber wie kann ich z.B. per echo
              den "index" in diesem Fall $cat_id des Arrays ausgeben? Normalerweise
              würde ich bei einem normalem Array diese per

              PHP-Code:
              $array[0
              usw... machen

              wenn ich aber versuche dieses array auszugeben
              PHP-Code:
              $array[$cat_id][$path][$sort]
              und zwar mit dem Aufruf
              echo $array[cat_id
              gibt er mir nur $path und $sort aus.... ich möchte aber auch die $cat_id haben!

              Kommentar


              • #8
                Was hält dich davon ab?
                PHP-Code:
                $arr[$catid]['catid'] = $catid//erste zeile
                $arr[$catid]['path'] = "foo";
                $arr[$catid]['sort'] = true
                Ist doch nicht so schwer
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  OffTopic:
                  deswegen dachte ich auch, dass es einfacher wäre, den index durchgehend nummeriert zu halten.

                  Kommentar


                  • #10
                    Es ist wahrscheinlich ein Verständnisproblem auf meiner Seite....
                    wenn ich diese Array jetzt in einer Zeile ausdrücken würde,
                    dann hätte ich doch folgendes ....

                    [catid][catid][path][sort] oder???

                    Irgendwie will es mir nicht in den Kopf. Sorry für´s blöde nachfragen

                    Kommentar


                    • #11
                      versuch's aus. lege so ein array an und fülle es mit testdaten. dann siehst du durch print_r, wie es aufgebaut ist. verändern und schauen - klappt schon.

                      Kommentar


                      • #12
                        das habe ich jetzt mal versucht:
                        PHP-Code:
                        $file"muster2.csv";
                        $farray   =  file($file) or die("Fehler beim oeffnen der Datei muster2.csv)");
                        if(
                        $farray
                        {        
                             foreach(
                        $farray as $line
                            {
                                  list(
                        $cat_id$path$sort) = split(";"$line);
                                  
                        $filehash[$cat_id]['cat_id'] = $cat_id;
                                  
                        $filehash[$cat_id]['path']   = $path;
                                  
                        $filehash[$cat_id]['sort']   = $sort;
                                  echo 
                        "HashArray : "$filehash[$cat_id]."<br>";
                             }

                        und raus kommt das:
                        "HashArray : Array"

                        Ich verstehs nicht

                        Kommentar


                        • #13
                          natürlich, ist ja auch ein array.
                          ersetze doch
                          PHP-Code:
                          echo "HashArray : "$filehash[$cat_id]."<br>"
                          durch
                          PHP-Code:
                          echo "HashArray : <pre>"print_r($filehash[$cat_id], true). "</pre><br>"
                          oder sowas.

                          Kommentar


                          • #14
                            Danke! Werde es ausprobieren.

                            Kommentar


                            • #15
                              Hallo Zusammen. Habe leider noch immer das Problem das Array zu
                              durchsuchen. Möchte den Inhalt einer Datenbank mit dem Inhalt des
                              Arrays vergleichen und die übereinstimmenden cat_id´s ausgeben.
                              Da ich bei dem im weiter vorher geposteten Array kein foreach nutzen
                              kann und andere Schleifen nicht zu funktionieren scheinen, bin ich im
                              Moment mit meinem knappen Programmierkenntnissen überfordert.
                              So sieht mein Quellcode aus... leider gibt er mir nur eine ID (immer die selbe) aus....
                              PHP-Code:
                              foreach($results as $result
                              {
                                  echo  
                              "<tr><td valign=\"top\" width=\"60\" style=\"font-size:11px;font_weight:bold;background-color:#FFFFFF\"><b>"  .$result->date_german.  "</b></td>";
                                     
                                  
                              $counti=0;        
                                  
                                  if (isset(
                              $filehash[$cat_id]))
                                  {
                                      echo 
                              $filehash[$cat_id]['cat_id']."<br>";
                                      
                                      if(
                              $filehash[$cat_id]['cat_id'] == $result->category_id
                                      {    
                                          echo 
                              "ich bin drin!";
                                          
                              $counti=1;
                                      }
                                  }
                                  elseif(
                              $counti == 0)    
                                  {
                                      echo  
                              "Ausgabe 1";
                                  }        
                                  
                                  echo  
                              "Ausgabe 2";

                              Vielen Dank für Eure Hilfe!

                              Kommentar

                              Lädt...
                              X