array van objecten iteratie & benaderen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.Net Developer - B2B & B2C klantportalen, were

Al meer dan 25 jaar bouwt dit hecht en informeel team software developers in Rotterdam complexe bedrijfskritische (web & mobile) applicaties voor het MBK en multinationals, zowel in het binnen- als buitenland. Ze bouwen uiteenlopende applicaties voor uiteenlopende klanten. Om maar wat voorbeelden van organisaties en software oplossingen te noemen: Een uitgebreid ERP en projectmanagement systeem, waardoor een bouwbedrijf haar processen wereldwijd just-in-time kan inrichten. Een klantportaal voor een verzekeringsmaatschappij, waardoor 2+ miljoen klanten gebruiksvriendelijk hun zaken regelen en inzien. Een patiënten portaal voor de registratie, bijhouden van het patenten dossier, de planning en facturatie van de zorg zodat de

Bekijk vacature »

Niek s

niek s

17/12/2009 23:06:00
Quote Anchor link
Ha,

Ben bezig met een SOAP (met WSDL) project. (ik maak zelf de WSDL).

Het resultaat van mijn code is een array met objecten, en ieder object beschrijft weer een element key en een element value. Dus als ik dat zo effe voor doe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Array
(
    [0] => stdClass Object
        (
            [key] => hoi
            [value] => john
        )

    [1] => stdClass Object
        (
            [key] => boe
            [value] => die
        )

    [2] => stdClass Object
        (
            [key] => bla
            [value] => test
        )

)


Want op de een of andere manier leverd de standaard SOAPClient van PHP me dit op deze manier. Dat is niet relevant nu.

Wat is nou de beste manier om hier een bepaalde waarde uit te krijgen? Je snapt natuurlijk al wel dat de key's mijn "veld namen" zijn, en de value's de waardes daarvan zijn. In een array. (en die array staat trouwens ook weer in een array, zodat je een soort van tabel krijgt).

Hoe kan ik dan het makkelijkst een value benaderen met een vooraf aangegeven key?

Zodat ik bijvoorbeeld hetzelfde kan doen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($data as $row) {
    echo $row['bla'];
}

?>


Want dat is uiteindelijk de bedoeling, alleen dan met een array waarvan 1 element bestaat uit bovenstaand voorbeeldje...

Is de enige manier om dit te doen nou echt die vertaal slag naar een "fatsoenlijke" array? door het eerst in een normale array te zetten?

Gr,
Niek
Gewijzigd op 01/01/1970 01:00:00 door Niek s
 
PHP hulp

PHP hulp

08/08/2020 22:33:45
 
Joren de Wit

Joren de Wit

18/12/2009 00:51:00
Quote Anchor link
Quote:
Is de enige manier om dit te doen nou echt die vertaal slag naar een "fatsoenlijke" array? door het eerst in een normale array te zetten?
Wil je er in PHP fatsoenlijk mee kunnen werken, dan lijkt me dit inderdaad de eerste stap.

Loop door die gegenereerde array en vul een nieuwe array op een correcte manier met de bestaande waarden. Werk vervolgens verder met die nieuwe array...
 
Pim -

Pim -

18/12/2009 01:09:00
Quote Anchor link
array get_object_vars ( object $object )

http://php.net/manual/en/function.get-object-vars.php
 
Jelmer -

Jelmer -

18/12/2009 08:53:00
Quote Anchor link
Niet gewoon zo?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

function soap_response_to_array(array $response)
{

    $pairs = array();
    
    foreach($response as $pair)
    {

        assert('is_object($pair)');
        
        $pairs[$pair->key] = $pair->value;
    }

    
    return $pairs;
}


$response = soap_response_to_array($soap_response);

echo $response['bla'];
?>

Dat lijkt mij het simpelste wanneer je soap webservice niet met al te veel data (in de orde van mb's) antwoordt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.