PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   array return falsche ausgabe (http://www.selfphp.de/forum/showthread.php?t=23379)

MonsterreactioN 21.06.2010 20:59:55

array return falsche ausgabe
 
Hallo zusammen

Ich habe ein Problem mit der Rückgabe eines Arrays.
In diesem Array befinden sich Werte die ich aus einem XML-File ausgelesen habe. Das sieht dann folgendermassen aus:

Code:


                $xml = simplexml_load_file('bkPcDksXml.xml');
                foreach ($xml->drink as $value) {
                if ($value->state=="online")
                        {
                                $Drinks[$inc] = $value->size;
                                $inc++;
                                $Drinks[$inc] = $value->vol;
                                $inc++;
                                $Drinks[$inc] = $value->content;
                                $inc++;
                                $Drinks[$inc] = $value->path;
                                $inc++;
                                $Drinks[$inc] = $value->state;
                                $inc++;
                        }
                }
        return $Drinks;
        }

Das alles ist in eine Funktion gepackt. DIe Funktion befindet sich in einem seperaten phpfile.
Wenn ich die Datei nunn ausgebe, erhalte ich nur die ausgabe "Array". Kopiere ich das gleiche aber in das FIle in dem es ausgegeben werden soll und genau gleich jedes Element aus "$Drinks" ausgeben möchte, ist die Ausgabe korrekt. An was liegt das?

knight1 22.06.2010 07:38:55

AW: array return falsche ausgabe
 
Hallo MonsterreactioN,
ich vermute mal dass Du die Funktion mit
PHP-Code:

$Drinks funktionsname(); 

aufrufst und die Ausgabe dann mit
PHP-Code:

echo $Drinks

machst.

Bei dieser Variante ist es kein Wunder dass Du dann als Ausgabe Array erhälst.
Du lässt Dir von der Funktion ja auch ein Array zurückliefern.

Was Dir zurückgeliefert wird, kannst Du dir mit
PHP-Code:

echo var_dump($Drinks); 

oder
PHP-Code:

echo var_export($Drinks); 

Anzeigen lassen.


Kai aka Knight1

MonsterreactioN 22.06.2010 12:03:42

AW: array return falsche ausgabe
 
Erst einmal vielen Dank, das bringt mich zwar nicht direkt weiter, hilft aber meinem Verständniss, so dass ich selber voran kommen werde.

Sehe ich das richtig, dass wenn ich

Code:

$x[] = getDrinks()
aufrufe, und getDrinks() einen Array zurückliefert, der ganze Array in das erste Element von $x gespeichert wird?

MonsterreactioN 22.06.2010 12:44:51

AW: array return falsche ausgabe
 
Hallo, ich hab eine zufriedenstellende Lösung gefunden.
Wenn ich das so regle:

Code:

    $x[] = array();
    $x = getDrinks();

funktionierts wunderbar.
Danke nochmals. Dank deiner Hilfe gelang es mir das Problem schnell zu lösen.

Indyk 23.06.2010 10:49:08

AW: array return falsche ausgabe
 
Hallo MonsterreactioN,

es freut mich zu sehen das du eine für dich funktionierende Lösung gefunden hast allerdings kann ich dich mit deinem halbwissen nicht gehen lassen (- ;

mit
PHP-Code:

$x[] = array(); 

wird nicht unter allem umständen das erste Element zu einem Array.
[] dient dazu einen Wert am Ende eines Arrays zu speichern, wenn das Array leer ist wird der Wert an den Anfang geschrieben, sollte der Array schon belegt sein wird der neue wert hinter den letzten gespeichert.

PHP-Code:

$x[] = 0;
$x[] = 1

somit würde du einen array mit 2 werten erhalten.

Desweiteren sollte die verwendung von $x[] ein warning produzieren sofern du dir fehler ausgeben lässt da ich stark vermute das die variable bis dahin noch nicht exisitert korrekter wäre:
PHP-Code:

$x = array();
$x[] = 0

Das was für dich funktioniert ist eigt. unsinnig
PHP-Code:

    $x[] = array();
    
$x getDrinks(); 

  • Im ersten Schritt erstellst du einen Array dessen letzte Wert ebenfalls ein Array ist
  • im zweiten Schritt überschreibst du die variable mit dem Rückgabewert deiner Funktion

Eigt. müsste es für dein Skript kein unterschied machen ob du den ersten teilausführst oder nicht da er durch den zweiten Schritt negiert wird.

Ich hoffe ich konnte mit verständlich ausdrücken und konnte dein php-wissen erweitern.

MonsterreactioN 23.06.2010 18:05:53

AW: array return falsche ausgabe
 
Hallo
Erstmal danke das du mich nicht einfach so gehen lässt, ich möchte schliesslich keinen Bastel produzieren. (Sonst müsste ich auch die functions nicht aussondern ...)

Code:

$x[] = array();
Ist wirklich unnötig. Komisch, habe gedacht, hätte ich schon ausporbiert.
Naja, bin mich halt mehr an andere Sprachen gewöhnt, wo man einen Array explizit initialisieren muss.
Beim Umgang mit Variablen wie man ihn bei php antrifft, ist dies aber eigentlich nur logisch (wie im nachhinein alles)
Werd mich wohl noch eine Weile mit variablen in php rumschlagen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:47:30 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.