[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
)
 

marino51

Utente Attivo
28 Feb 2013
2.920
164
63
Lombardia
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;
 

condorex

Nuovo Utente
26 Nov 2019
3
0
1
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
 

condorex

Nuovo Utente
26 Nov 2019
3
0
1
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++;
}