[PHP] Estrarre da una classe i valori che mi interessano

condorex

Nuovo Utente
26 Nov 2019
3
0
1
Salve,
da una chiamata SoapClient ricevo valori strutturati come segue.
Vorrei trarne un elenco ma non capisco come entrare in questo oggetto e fare l'estrazione dei vari array.
Qualcuno ne sa di più?
Grazie della collaborazione

stdClass Object
(
[return] => stdClass Object
(
[pageProductsCount] => 100
[products] => Array
(
[0] => stdClass Object
(
[metadataFormat] => stdClass Object
(
[name] => oai_dc
[namespace] => http://www.openarchives.org/OAI/2.0/oai_dc/
[prefix] => dc
[schema] => http://www.openarchives.org/OAI/2.0/oai_dc.xsd
)

[productID] => 32532
[productMetadata] => stdClass Object
(
[dc] => stdClass Object
(
[title] => Malignant fibrous histiocytoma of the lung with inflammatory features
[contributor] => Array
(
[0] => sòdlfsàldf
[1] => dfsdf
)

[date] => 1 - 1984
[identifier] => https://iris.univpm.it/handle/11566/32532
[publisher] => Piccin Editore
)

)

[productURI] => urn:u-gov:univpm:RI_PRD:32532
)

[1] => stdClass Object
(
[metadataFormat] => stdClass Object
(
[name] => oai_dc
[namespace] => http://www.openarchives.org/OAI/2.0/oai_dc/
[prefix] => dc
[schema] => http://www.openarchives.org/OAI/2.0/oai_dc.xsd
)

[productID] => 33363
[productMetadata] => stdClass Object
(
[dc] => stdClass Object
(
[title] => Correlazioni tra immunoistochimica e ultrastruttura negli schwannomi
[contributor] => Array
(
[0] => sdsdfs
[1] => sdfsdf
)

[date] => 1 - 1991
[identifier] => https://iris.univpm.it/handle/11566/33363
[publisher] => Edizioni Minerva Medica:Corso Bramante 83-85, 10126 Turin Italy:011 39 011 678282318, EMAIL: [email protected], INTERNET: http://www.sdfsfd.it, Fax: 011 39 011 949820
)

)

[productURI] => urn:u-gov:univpm:RI_PRD:33363
)
 
ti ho preparato questo esempio sperando che sia chiaro,
devi completare le ripresa dei dati del prodotto,
ma come vedi c'é un indice ($e), che dovrebbe permetterti di scorrere la risposta, per estrarre i dati di tutti i prodotti, in funzione del "$pageProductsCount"

vedi se ti aiuta, puoi già stampare queste prime info per capire se funziona ....
PHP:
try { $output = $client->Interrogazione($SoapRequest); }   // invio della richiesta e risposta in $output
catch ( SoapFault $e ) { }


$pageProductsCount = $output->return->pageProductsCount;   // elementi presenti nella risposta

$products = $output->return->products;                     // puntatore a ciascun elemento


$e = 0;


$ID = $products[$e]->metadataFormat;                       // puntatore elemento


$name      = $ID->name;
$namespace = $ID->namespace;
$prefix    = $ID->prefix;
$schema    = $ID->schema;


$productID = $products[$e]->productID;                      // ID prodotto

$date       = $products[$e]->date;
$identifier = $products[$e]->identifier;
$publisher  = $products[$e]->publisher;
 
Ciao
allora Marino51 stampa fino a
$schema = $ID->schema;
poi più nulla. In Soldoni a me serve il contenuto di "dc"
[productMetadata] => stdClass Object
(
[dc] => stdClass Object
(
[title] => Malignant fibrous histiocytoma of the lung with inflammatory features
[contributor] => Array
(
[0] => CINTI, Saverio
[1] => BALERCIA, Giancarlo
)

[date] => 1 - 1984
[identifier] => https://iris.univpm.it/handle/11566/32532
[publisher] => Piccin Editore
)

)

Grazie mille
 
Ho risolto in questo modo grazie all'imbeccata di Marino51
Comunque con SOAP mi si è aperto un mondo

PHP:
try { $output = $client->getProductsByQuery($requestParams); }
catch ( SoapFault $e ) { }

$pageProductsCount = $output->return->pageProductsCount;   // elementi presenti nella risposta
echo $pageProductsCount;

$products = $output->return->products;                     // puntatore a ciascun elemento

$e = 0;

$ID = $products[$e]->metadataFormat;                       // puntatore elemento
while ($e <= 10) {

    $productID = $products[$e]->productID;                      // ID prodotto

    //$MetaData = $products[$e]->productMetadata
    //$dc = $MetaData[$e]->dc;
    $arrPubblicazione = $products[$e]->productMetadata->dc;        // tutti i dati relativi alla publbicazione

    $titolo = $arrPubblicazione->title;                            //  titolo
    $link =  $arrPubblicazione->identifier;                        // link alla pubblicazione
    $data =  $arrPubblicazione->date;                            // data pubblicazione
    $publisher    =  $arrPubblicazione->publisher;                // editore


    echo '<a href="'.$link.'">'.$titolo.'</a><br>';
    echo 'Relatori:<br>';
    foreach ($arrPubblicazione->contributor as $value) {        // contributori
        echo $value.'<br>';
    }
    echo 'Data Pubblicazione: '.$data.'<br>';
    echo 'Casa Editrice: '.$publisher.'<br><br><br>';
    $e++;
}
 

Discussioni simili