Array als Rückgabewert

Hallo zusammen,

ich google mir schon die ganze Zeit einen ab:rolleyes: und find doch keine gescheite Lösung. Da ich bei IPS ja Rückgabewerte aus Scripten nicht per return sondern per echo übergeben muss, wird es bei einem Array etwas schwierig.

Ich würde gern per „IPS_RunScriptWaitEx“ ein Script aufrufen, dass mir ein assoziatives Array zurückliefert. Mein erster Ansatz war das Rückgabe-Array mit implode in einen String zu packen, den per echo zu übertragen und mit explode im Zielscript mein Array wieder aufzubauen. Leider gehen mir dabei aber die Assoziationen verloren.

Und an der Stelle komm ich irgendwie nicht weiter :frowning:
Hat jemand eine Idee für mich?

Hi,
Du könntest Dein Skript ja auch in einer Funktion verpacken und die Datei per include / require laden. Dann könntest Du ganz normal mit Return arbeiten.

Was auch klappen sollte: Das assoziative Array mit serialize zu einem String machen und dann entweder per Echo die Daten übergeben und unserialize ausführen oder das serialisierte Array in eine IPS Variable rausschreiben und diese in einem anderen Skript wieder einlesen und unserialize ausführen.

Grüße, Benjamin

Hallo brausepaul,
habe mal in der 2.5 Betaphase folgendes für die ARRAY-Übergabe getestet und hat auch Funktioniert, vielleicht hilft es Dir

//Arrays extrahieren und anlegen + + + + + + + + + + + + + + + + + + + + + + + +

foreach($_IPS as $key => $val)
  {
   if (strpos($key,"[") >= 1)
      {
       $ArrayName    = substr($key,0,strpos($key,"["));
       $ArrayIndex   = substr($key,strpos($key,"[")+1,strpos($key,"]")-strpos($key,"[")-1);
       ${$ArrayName}[$ArrayIndex] = $val;
      }
  }
// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

… das aufrufende Script


$Daten = array("Vari[0]"=>55320, "Trans[0]"=>30, "Vari[1]"=>45036, "Trans[1]"=>60, "Zeitspanne"=>1);

IPS_RunScriptEx(19409  , $Daten);
 

P.S.: poste doch mal einen Mustercode wie Du es vor hast

tgusi74

Hi tgusi74,
ich glaube :confused: es geht um die Gegenrichtung: Rückgabe eines Arrays an das aufrufende Skript.
Grüße, Benjamin

serialize <-- das war es was ich gesucht hatte, klappt wunderbar :slight_smile:

ja include wäre eine Möglichkeit gewesen…aber das nutze ich nur ungern.
Irgendwann werde ich faul und kopiere eine Standard-Include-Liste in meine PHP-Scripte um nicht nachdenken zu müssen wo welche Funktionen drin sind. War dann nicht sonderlich ressourcenschonend:p

Kann mit IPS_RunScriptEx nicht passieren…