Tom: Allgemeine Frage zu Rückgabewerten einer Funktion

Beitrag lesen

Hello,

echo besagteFunktion($arg)[$i];//Und das hier klappt nicht

Ist das normal? Und wenn ja, welchen Grund hat es, dass ich so nicht auf das Array zugreifen darf.

Das ist "normal".
Sicher wäre es schön, wenn soetwas auch ginge, aber programmiertechnisch äußerst unsicher.
Bei PHP sind die Rückgabewerte einer Funktion variant, also nicht festgelegt.
Das liegt am besonderen Konzept von PHP.

Du kannst also nur erst den Rückgabewert in einer Ergebnisvariablen speichern. dadurch erhält er einen Bezeichner und ist referenzierbar. Danach kannst Du erfragen, welchen Typ dieser Bezeichner symbolisiert, also ob logisch, numerisch, String, oder Array. Weitere Unterscheidungen zu treffen, lohnt in PHP nicht. Ggf. reicht es sogar, zwischen Skalar und Array zu unterscheiden (oder dann eben noch "Objekt" bei OOP).

PHP arbeitet also quasi in zwei Layern...
In der einen Schicht werden die Metadaten über den Bezeichner geführt
in der zweiten Schicht werden die Daten selber geführt.

Daher ist es auch wichtig, bei einer solchen Funktion

$_ergebnis = mach_array($string);

hinterher nach den Ergebnistyp zu fragen:

if (false !== ($_ergebnis = mach_array($string))
  {

}

oder gleich:

if (is_array($_ergebnis = mach_array($string))   ## habe ich nícht getestet :-)
  {
    foreach($_ergebnis as $key => $val)
    {
      echo "<b>$key</b> =&gt; $val <br>";
  }

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau