PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   array_key_exists auf mehrdimensionales Array anwenden (https://www.php-resource.de/forum/php-developer-forum/100890-array_key_exists-auf-mehrdimensionales-array-anwenden.html)

medium22 25-12-2010 14:51

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

combie 25-12-2010 15:05

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?

medium22 25-12-2010 15:22

Au Backe! An isset habe ich nun gar nicht gedacht! :D
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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:33 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG