Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Parsing Array

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2017
    Messaggi
    3

    Parsing Array

    Ciao a tutti ho un problema nell'eseguire il parsing di un Array in php.


    Via allego il codice PHP e l'estratto Array:


    PHP
    Codice PHP:
     $url "https://vulners.com/api/v3/audit/audit/?os=redhat&version=7.1&package=redhat-release-server-7.2-9.el7.x86_64";

        
    $cURL curl_init();
        
    curl_setopt($cURLCURLOPT_URL$url);    curl_setopt($cURLCURLOPT_HTTPGETtrue);    curl_setopt($cURLCURLOPT_RETURNTRANSFERtrue);    $result curl_exec($cURL);    curl_close($cURL);    
        
    $jsonData json_decode($resulttrue);
       
        foreach (
    $jsonData as $valore)    {        echo $valore['package'];        echo '<pre>'var_dump($item);            } 

    Array
    codice:
    Array
    (
        [result] => OK
        [data] => Array
            (
                [packages] => Array
                    (
                        [redhat-release-server-7.2-9.el7.x86_64] => Array
                            (
                                [RHSA-2017:3108] => Array
                                    (
                                        [0] => Array
                                            (
                                                [package] => redhat-release-server-7.2-9.el7.x86_64
                                                [providedVersion] => 0:7.2-9.el7
                                                [bulletinVersion] => 7.2-9.el7_2.3
                                                [providedPackage] => redhat-release-server-7.2-9.el7.x86_64
                                                [bulletinPackage] => redhat-release-server-7.2-9.el7_2.3.x86_64.rpm
                                                [operator] => lt
                                                [bulletinID] => RHSA-2017:3108
                                                [cvelist] => Array
                                                    (
                                                    )
    
                                                [fix] => sudo yum -y update redhat-release-server
                                            )
    
                                    )
    
                                [RHSA-2017:1384] => Array
                                    (
                                        [0] => Array
                                            (
                                                [package] => redhat-release-server-7.2-9.el7.x86_64
                                                [providedVersion] => 0:7.2-9.el7
                                                [bulletinVersion] => 7.2-9.el7_2.2
                                                [providedPackage] => redhat-release-server-7.2-9.el7.x86_64
                                                [bulletinPackage] => redhat-release-server-7.2-9.el7_2.2.x86_64.rpm
                                                [operator] => lt
                                                [bulletinID] => RHSA-2017:1384
                                                [cvelist] => Array
                                                    (
                                                    )
    
                                                [fix] => sudo yum -y update redhat-release-server
                                            )
    
                                    )
    
                            )
    
                    )
    
                [vulnerabilities] => Array
                    (
                        [0] => RHSA-2017:3108
                        [1] => RHSA-2017:1384
                    )
    
                [reasons] => Array
                    (
                        [0] => Array
                            (
                                [package] => redhat-release-server-7.2-9.el7.x86_64
                                [providedVersion] => 0:7.2-9.el7
                                [bulletinVersion] => 7.2-9.el7_2.3
                                [providedPackage] => redhat-release-server-7.2-9.el7.x86_64
                                [bulletinPackage] => redhat-release-server-7.2-9.el7_2.3.x86_64.rpm
                                [operator] => lt
                                [bulletinID] => RHSA-2017:3108
                                [cvelist] => Array
                                    (
                                    )
    
                                [fix] => sudo yum -y update redhat-release-server
                            )
    
                        [1] => Array
                            (
                                [package] => redhat-release-server-7.2-9.el7.x86_64
                                [providedVersion] => 0:7.2-9.el7
                                [bulletinVersion] => 7.2-9.el7_2.2
                                [providedPackage] => redhat-release-server-7.2-9.el7.x86_64
                                [bulletinPackage] => redhat-release-server-7.2-9.el7_2.2.x86_64.rpm
                                [operator] => lt
                                [bulletinID] => RHSA-2017:1384
                                [cvelist] => Array
                                    (
                                    )
    
                                [fix] => sudo yum -y update redhat-release-server
                            )
    
                    )
    
                [cvss] => Array
                    (
                        [score] => 0
                        [vector] => NONE
                    )
    
                [cvelist] => Array
                    (
                    )
    
                [cumulativeFix] => sudo yum -y update redhat-release-server
                [id] => AZP2HVGJ3L3M6FYL28K4YDNGW8CRN19P49V4Y6X3501J67W1SMSCM9MXNC5DVGWG4X8ON5ZM0RLYK7XB818IHUA6GHL737M2P4VQ250SHLDE2IZUY4F3GATSRQX8XBLX
            )
    
    )

    Quello che vorrei fare, è il parsing solamente di alcuni valori come package...
    Non mi funziona, sapete dirmi il perchè ?

    Grazie a tutti

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,301
    Stampa $valore con print_r() vedrai che "package" sta dentro un altro array, quindi non lo puoi raggiungere con $valore['package'].

    Stampa le variabili su cui lavori se non ottieni il comportamento che ti aspetteresti, spesso dentro non c'è quello che stai pensando.

    P.S.: cosa ti aspetti da var_dump($item); ?
    $item nel codice non sta da nessuna parte.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2017
    Messaggi
    3
    P.S.: cosa ti aspetti da var_dump($item); ?
    $item nel codice non sta da nessuna parte.
    Effettivamente questo è un refuso di una prova...
    Comunque non so come raggiungere il io scopo

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,301
    $valore['data']['packages']

    packages sta dentro l'array data, non direttamente dentro all'array $valore.
    Si tratta di array annidati o array di array se preferisci.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2017
    Messaggi
    3
    Ho provato ma niente, mi da degli errori

    codice:
    Warning: Illegal string offset 'data' in C:\xampp\htdocs\vuln\prova.php on line 23
    
    Warning: Illegal string offset 'packages' in C:\xampp\htdocs\vuln\prova.php on line 23
    O
    Notice: Undefined index: data in C:\xampp\htdocs\vuln\prova.php on line 23
    Quello che vorrei far visualizzare è parte di questo contenuto

    codice:
    [0]=>Array
                                            (
                                                [package]=> redhat-release-server-7.2-9.el7.x86_64
                                                [providedVersion]=>0:7.2-9.el7
                                                [bulletinVersion]=>7.2-9.el7_2.3
                                                [providedPackage]=> redhat-release-server-7.2-9.el7.x86_64
                                                [bulletinPackage]=> redhat-release-server-7.2-9.el7_2.3.x86_64.rpm
                                                [operator]=> lt
                                                [bulletinID]=> RHSA-2017:3108
                                                [cvelist]=>Array
                                                    (
                                                    )
    
                                                [fix]=> sudo yum -y update redhat-release-server
                                            )
    
    come facci.
    Grazie mille

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2017
    Messaggi
    3
    Buongiorno a tutti.
    Vorrei riportare viva questa discussione.

    Io vorrei pulire l'array multi livello allegato .

    Quello che vorrei mantenere è solamente l'array con Key [reasons]
    Come posso fare.
    Grazie

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,301
    $nuovo_array = $valore['data']['reasons'];
    print_r( $nuovo_array );

    ma occhio che sei dentro a un ciclo, quindi ad ogni iterazione $nuovo_array viene sovrascritto, quindi ciò che devi farci lo devi fare all'interno del ciclo.
    Ultima modifica di Alhazred; 28-12-2017 a 14:20

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2018 vBulletin Solutions, Inc. All rights reserved.