array_key_exists auf mehrdimensionales Array anwenden

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

  • array_key_exists auf mehrdimensionales Array anwenden

    Hallo,


    Ich habe keine Frage weil etwas nicht funktioniert sondern weil etwas nicht schön (was sicherlich definitionssache eines jeden ist) ist aber trotzdem den Zweck erfüllt.

    Ich lade jeweils eine unterschiedliche Anzahl an Daten aus einer MySQL-Datenbank und speichere die in einem Array, was folgendermassen ausschaut

    PHP-Code:
    while ($r_nrs mysql_fetch_array($res_nrs)) {
        
    $arr_nrs[$r_nrs['ts']][] = $r_nrs['res1'];
        
    $arr_nrs[$r_nrs['ts']][] = $r_nrs['res2'];
        
    $arr_p[$r_nrs['ts']] = $r_nrs['res1'];
    }
    echo 
    "<pre>";
    print_r($arr_nrs);
    echo 
    "</pre>";
    echo 
    "<pre>";
    print_r($arr_p);
    echo 
    "</pre>"
    Code:
    Array
    (
        [1288566000] => Array
            (
                [0] => 263
                [1] => 1
            )
    
        [1285884000] => Array
            (
                [0] => 137
                [1] => 1
            )
    // usw. ...
    Array
    (
        [1288566000] => 263
        [1285884000] => 137
        [1283292000] => 370
        [1280613600] => 549
    )
    'ts' ist hierbei ein timestamp, den ich zur Weiterverarbeitung benötige (ob vorhanden oder nicht vorhanden). Ebenso ist es wichtig, dass die beiden Zahlen, welche aktuell an den timestamp gebunden sind, so zusammen bleiben - mit denen will ich später noch Rechnen und erst dann eine Ausgabe machen.
    Nun hatte ich erst versucht, mit array_key_exists auf 'ts' zuzugreifen, was aber nicht ohne Erfolg blieb. Darum habe ich kurzerhand ein zusätzliches Array ($arr_p) gefüllt, um dies durchführen zu können.
    PHP-Code:
    if (array_key_exists($m1$arr_p)) {
    echo 
    $arr_nrs[$m1][0]." mit ".$arr_nrs[$m1][1]." ist vorhanden!";
    }
    // Ausgabe: 263 mit 1 ist vorhanden! 
    $m1 ist hierbei der timestamp.

    Wie gesagt, mit einem zusätzlichen Array erfüllt das Ganze seinen Zweck und bringt auch das gewünschte Ergebnis, aber schön finde ich das nicht.
    Gibt es keine Möglichkeit, ohne zusätzliches Array, ohne das Array durch eine Schleife zu jagen, etc., kurz, direkt mit einer Array-Funktion auf einen tiefergelegenen Schlüssel zuzugreifen? Ist mir ein bisschen viel Wirr-Warr für diese kleine 'Prüfung'..


    Gruss

  • #2
    PHP-Code:
    if(isset($arr_nrs[$m1])) 

      echo 
    $arr_nrs[$m1][0]." mit ".$arr_nrs[$m1][1]." ist vorhanden!"

    *ungetestet*

    Aber warum überlässt du das nicht der DB, und ließt nur die benötigten Daten?
    Wir werden alle sterben

    Kommentar


    • #3
      Au Backe! An isset habe ich nun gar nicht gedacht!
      Ich lese schon nur das aus was ich brauche - jeweils 4 Zeilen und genau diese 4 brauche ich. Das Problem (was ich mir vermutlich selbst gemacht habe) liegt hierbei bei der Ausgabe.
      Das Ganze dient einer (monatlichen) Userstatistik und da kann es vorkommen, dass mal einen Monat keine Daten vorhanden sind. Daher muss ich jeweils erst prüfen ob für den jeweiligen Monat überhaupt Daten vorhanden sind und dann entsprechend die Ausgabe abpassen (Ausgabe in einer Tabelle: erzwungenes Leerzeichen oder Daten). Das ist für mich der Grund die Ausgabe nicht innerhalb von while zu machen. Würde zwar auch gehen, aber da wäre es noch umständlicher weil man die Anzahl Schleifendurchläufe, etc. prüfen müsste. Würde im Endeffekt einiges mehr an Code geben, denke ich.

      Kommentar

      Lädt...
      X