Bestimmte Values aus Mehrdimensionalem Array ausgeben!?

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

  • Bestimmte Values aus Mehrdimensionalem Array ausgeben!?

    Hallo,

    ich habe folgendes Problem:

    Ich habe ein mehrdimensionales Array, indem ein bestimmter Wert steckt.
    Jetzt möchte ich, dass das Array, in dem der Wert steckt ausgegeben wird, habe aber keine Ahnung wie!

    PHP-Code:
    $array = array(
    '1' => array(
        
    'name'     => 'bla'
        'nochwas' 
    => 'bla_nochwas'
        
    )
    '2' => array(
        
    'name'     => 'bla2'
        'nochwas' 
    => 'bla_nochwas2'
        
    )

    Wie komme ich jetzt an den key von dem Array, wo z.B.: 'bla2' steht
    und wie kann ich dann das Array ausgeben?

    Ich hoffe, meine Frage unterfordert euch nicht und ihr könnt mir helfen?!
    Habe schon Tage gesucht, aber nicht wirklich was Brauchbares gefunden.

  • #2
    Simpelster und direktester Weg: Array in Schleife durchlaufen, und dabei prüfen, ob das Unter-Element mit dem Schlüssel name den Wert bla2 hat … und wenn ja, dann das komplette Ober-Element ausgeben.

    (Klar, ausgeklügeltere Ansätze mittels diverser Array-Funktionen sind denkbar … aber auf die trivialste und nahelegendste Methode müsste doch jeder, der auch nur ein bisschen vom Programmieren versteht, selber kommen können …?))
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Danke wahsaga für deine Antwort,

      leider sind Arrays noch so eine kleine Baustelle von mir und ich komme bei etwas verzwickteren Abfragen etwas ins stolpern.

      Ich habe jetzt mehrere Versuche gestartet und bin leider immer noch nicht an mein Ziel gekommen.

      Kommentar


      • #4
        Na dann zeig mal, was du versucht hast.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Irgendwie so:
          PHP-Code:
                    $key array_search($bla_blub,$bla);
                    if(isset(
          $key))
                      {
                          echo 
          "ja<br /><br />test ".array_keys($key);
                          
          print_r(array_values($bla));
                          
          print_r(array_keys($bla));
                      }
                      else
                      {
                          echo 
          "nein";
                      }; 
          PHP-Code:
          if(array_search($bla_blub,$bla))
          {
              for(
          $i 0$i count($bla_blub); $i++)
              {
                  echo 
          '<br />'.$bla_blub[$i];
              }

          Zwei Varianten und beide funzen net!

          Kommentar


          • #6
            Natürlich funzt das nicht – array_search sucht nur nach kompletten Elementen auf der obersten Ebene eines Arrays.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Bei der array_search-Variante zeigt er mir ja wenigstens schon mal das "Ja" an.

              Nur komme ich nicht an das komplette Array ran, in dem die Variable "$bla_blub" steht!

              Kommentar


              • #8
                PHP-Code:
                foreach($array as $element) {
                  if(
                $element['name'] == 'bla2') {
                    
                var_dump($element);
                    break; 
                // wenn es den Wert nur einmal im Array geben kann, aus Schleife aussteigen
                           // andernfalls break entfernen
                  
                }

                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Zitat von senger1985 Beitrag anzeigen
                  ...
                  PHP-Code:
                  $array = array(
                  '1' => array(
                      
                  'name'     => 'bla'
                      'nochwas' 
                  => 'bla_nochwas'
                      
                  )
                  '2' => array(
                      
                  'name'     => 'bla2'
                      'nochwas' 
                  => 'bla_nochwas2'
                      
                  )

                  Ein lustiges Array. PHP erlaubt keine Zeichenketten als Array-Keys, die gleichzeitig Integer-Zahlen darstellen. Ein paar Kommas fehlen auch. Wo kommen die Daten her? Aus einer Datenbank? Die hat üblicherweise bessere Suchmöglichkeiten als PHP-Code.

                  Wie komme ich jetzt an den key von dem Array, wo z.B.: 'bla2' steht
                  und wie kann ich dann das Array ausgeben?
                  Eine Liste aller Sub-Arrays, die der Anforderung entsprechen bekommst du so:
                  PHP-Code:
                  $needle 'bla2';
                  $filtered array_filter(
                      
                  $array,
                      function(
                  $subarray) use ($needle) {
                          return 
                  $subarray['name'] === $needle;
                      }
                  );
                  var_dump($filtered); 
                  Die Keys bekommst du per array_keys($filtered). Falls nur der erste gesucht wird, reicht key($filtered).

                  Habe schon Tage gesucht, aber nicht wirklich was Brauchbares gefunden.
                  Naja, wir hatten einen ähnlichen Thread hier vor einiger Zeit, in dem auch verschiedene Lösungen diskutiert wurden -- allerdings in Bezug auf PHP-Interna, die nichts mit einer einfachen Lösung zu tun haben. Aber dort wurden array_filter(), foreach (ohne und mit benutzerdefinierter Vergleichsfunktion), und array_walk() als Lösungsansätze aufgelistet. Es ging allerdings ums Suchen und Löschen von Einträgen in verschachtelten Arrays, deswegen kann man die dortigen Code-Beispiele nicht 1-zu-1 übernehmen.
                  Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                  Kommentar


                  • #10
                    OffTopic:
                    Zitat von fireweasel Beitrag anzeigen
                    PHP erlaubt keine Zeichenketten als Array-Keys, die gleichzeitig Integer-Zahlen darstellen.
                    Erlaubt schon – aber sie werden zu Integer-Keys gecastet.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Hallo fireweasel,

                      die Werde kommen alle aus einer separaten Datei und nicht aus einer Datenbank.

                      Und dass das Array nicht richtig geschrieben wurde, lag an mir, hab mich hier vertippt.

                      In der Original-Datei ist es alles richtig geschrieben.

                      Kommentar

                      Lädt...
                      X