Versio

array van objecten iteratie & benaderen

Overzicht Reageren

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

23/05/2012 21:46:32
Gesponsorde koppelingen:
 
Joren de Wit
Beheerder

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 rrrr

Jelmer rrrr

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

Get Adobe Flash player