Arraytiefe zählen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Arraytiefe zählen

    Hallo zusammen,

    Ich freunde mich gerade mit funktionen an.

    Ich stehe vor folgendem Problem:

    Ich habe eine Funktion webrequest:

    Quellcode

    1. $client = new SoapClient( "http://webservices.dienst.net/fax/1.0/faxservice.asmx?WSDL",array("trace" => 1, "exceptions" => 0));
    2. $send->customerID = "mycusid";
    3. $send->password = "mypw";
    4. $send->dnis = "mynb";
    5. $res = $client->GetInboundList($send);
    6. print_r($res);


    Hier bekomme ich folgende Rückgabe:

    Quellcode

    1. stdClass Object (
    2. [GetInboundListResult] => stdClass Object (
    3. [string] => Array (
    4. [0] => 4989954398823-{072b8b18-f3a5-4051-91d6-0a2fb88d953d}
    5. [1] => 4989954398823-{a936e183-c2a1-4857-896d-1cffb404a9ce}
    6. [2] => 4989954398823-{bfba79f7-db58-4557-835b-037dc91ba53b}
    7. [3] => 4989954398823-{8077afe3-42ba-41ab-9eef-032b425fe25d}
    8. )
    9. )
    10. )


    Nun möchte ich aber nur an die Werte im Array "string" rankommen. Hierfür muss ich also die variable $res folgendermaßen anpassen:
    print_r($res->GetInboundListResult->string);

    Wenn ich die Funktion webrequest nun abermals nutzen möchte, nur mit anderen Parametern, kann es passieren das bei der Rückgabe dann aber nur 2 Levels vorhanden sind bis zu den Daten (quasi also im Array GetInboundList die Werte bereits vorhanden sind).

    Dann wiederum kann es ja auch noch sein wenn es nur ein Wert ist, das ich gar kein Array im 3ten bzw. 2ten Level zurückbekomme, sondern einfach nur einen String.

    Nun suche ich die Möglichkeit die Tiefen eines Arrays zu zählen und daraus dann mit if entsprechende Vorgehensweisen zu definieren, ist das der richtige Weg?

    Grüße,
    Matthias
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Hi!

    Was ich möchte ist eben EINE Funktion die mir die TransactionID's aller wartenden Faxe abholt.

    Dieses kann folgendermaßen aussehen:

    (Wenn mehrere Faxe warten) std objekt => array => array => Werte
    (Wenn nur ein Fax wartet) std objekt => array => Werte

    Dann sollen für alle wartenden Faxe (Transactionid's) die eigentlichen Faxe geholt werden.
    Hierfür gibt es immer den gleichen Aufbau:

    std object => array => Werte

    Das Problem ist der Aufruf für das abholen der Faxe, da hier imme die Transactionid als String erwartet wird. Also muss dies bereits vorher standartisiert werden. Es lief schon mal, aber unsauber mit mehreren foreach Schleifen, und deiner object2array Klasse - ich will es eben sauber haben, momentan läuft es allerdings überhaupt ned, bin heute den ganzen Tag drangesessen ohne Fortschritte :( Aber ich schaff es noch :)

    Ich stell es mir halt so vor:

    Abfragen der Tranactionid's => was auch immer zurückkommt, es ist zum schluss ein eindimensionales Array.

    Diese Werte werden dann per EINER foreach Schleife übergeben zum abholen der Faxe .... so möcht ich das, ist das denn überhaupt ohne Hilfsfunktionen möglich? Wenn nein, welche bräuchte ich dann? Ich denke eine die mir ein Array aus den zurückgegebenen Transactionid's macht, oder? Aber dann sollte es doch mit EINER foreach laufen?

    Grüße,
    Matze
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Hi!

    Also, folgendes, wenn ich mehrere Faxe in der Queue habe, dann bekomme ich folgendes Array zurück:


    stdClass Object
    (
    [string] => Array
    (
    [0] => 4989954399172-{8640f39c-6a06-4d21-a77f-f0153f559588}
    [1] => 4989954399172-{6877211f-6cd8-4b26-94fc-c39c8c25cebe}
    )
    )


    Diese kann ich dann durch get_object_vars umwandeln und bekomme dann folgende Ausgabe:


    Array
    (
    [string] => Array
    (
    [0] => 4989954399172-{8640f39c-6a06-4d21-a77f-f0153f559588}
    [1] => 4989954399172-{6877211f-6cd8-4b26-94fc-c39c8c25cebe}
    )
    )


    Dieses wiederum kann ich durch die Angabe des array's [string]auf die Werte runterbrechen:


    Array
    (
    [0] => 4989954399172-{8640f39c-6a06-4d21-a77f-f0153f559588}
    [1] => 4989954399172-{6877211f-6cd8-4b26-94fc-c39c8c25cebe}
    )


    Wenn nun aber nur ein Fax in der Queue ist bekomme ich folgendes Gerüst:


    stdClass Object
    (
    [string] => 4989954398823-{4f9dc965-56c6-4570-b505-f415f0e3a114}
    )


    Dann wieder get_object vars:


    Array
    (
    [string] => 4989954398823-{4f9dc965-56c6-4570-b505-f415f0e3a114}
    )


    Und dann wieder array string:


    4989954398823-{4f9dc965-56c6-4570-b505-f415f0e3a114}



    So, nun geht es darum das ich eine Möglichkeit suche wie ich egal welcher Fall eintritt (queue mit einem oder mehreren Faxen) ich ein Array zurückgebe (denn das benötige ich für weiterverarbeitende Funktion) das immer gleich ist.

    Denn im nächsten Schritt sollen die Faxe der Queue abgeholt werden, und dafür benötige ich diese Transaction ID's ...

    Danke vorab,
    Matze
    Das Leben ist binär - du bist eine 1, oder eine 0