Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Filtrare in lettura un file json

    Ciao a tutti,
    Ho il seguente file list_stage.json e il suo contenuto è il seguente
    Codice PHP:
    {    
        
    "result": {        
             
    "title""Internship",        
                   
    "internship": [ {                 
                               
    "title""How to Create an RSS Feed with PHP and MySQL",        
                                
    "country""Italy",        
                                 
    "Sector""TEST" 
                                
    } ]    
                    }

    Devo leggere questo file e filtrare le informazioni in base alla scelta dell'utente per esempio tutti gli stage con sector = TEST e successivamente filtrare per un'altro campo e cosi via..

    Como posso fare? io ho pensato a degli if del tipo ma spero in qualcosa di più...
    Codice PHP:
    foreach ($posts as $post) {
     if(
    $post->sector == "TEST"){ // mostro le info 
     
    }else { echo "0 result"; } 
     } 
    Ultima modifica di simone.marchese; 10-03-2015 a 11:15

  2. #2
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Questa funzione non ti può essere d'aiuto?

    http://php.net/manual/en/function.json-decode.php
    Che mestiere difficile.....essere da soli ancora di più

  3. #3
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    Questa funzione non ti può essere d'aiuto?

    http://php.net/manual/en/function.json-decode.php
    Il file php che legge il json è fatto nel seguente modo
    Codice PHP:
    $json_file file_get_contents($patch);
    // convert the string to a json object
    $jfo json_decode($json_file);
    // copy the posts array to a php var
    $posts $jfo->result->internship;
    foreach(
    $posts as $key){
     
    // visualizzo i singoli elementi
     
    if($key->country == "Italy"){ echo "Mostro tutti gli internship italiani"; }

    Per filtrare i singoli elementi sono costretto a fare degli if come da codice?
    Sviluppatore web e web application.
    Svolgo con passione e determinazione il proprio lavoro dedicando tempo alla ricerca e all'approfondimento di novità.
    www.decadeweb.it

  4. #4
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ok ho capito, no non penso che si possano estrarre tutti i nodi che contendono la proprietà "Country = Italy".
    Una funzionalità del genere l'avresti se non erro con xml.

    Ora provo a spararla grossa.
    Il formato json è pensato come risposta tipo da un webservices.
    In questo caso tu andresti a interrogare il web services in modo da ottenere tutti gli "internship italini" già filtrati.
    Che mestiere difficile.....essere da soli ancora di più

  5. #5
    Qualcosa puoi fare trasformando il json in array.
    In questo codice creo prima una funzione che scorre in modo ricorsivo un array, e i vari sotto-array.
    Poi con json_decode trasformo il tuo json (ne ho messo uno fittizio) in array.
    A quel punto è tutto piu facile.
    Il problema che mi preoccupa semmai è il fatto che tu abbia due campi chiamati title, e che un nome di campo sia dinamico ("interneship" nel tuo esempio), questo complica un po le cose.. ma se ne viene fuori.

    Codice PHP:
    <?php
        
        
    function recursive_array_search($needle,$haystack,&$return) {
            while(list(
    $chiave,$valore)=each($haystack)){
                if(
    is_array($valore)){
                    
    recursive_array_search($needle,$valore,$return);
                }
                else{
                    if(
    $valore == $needle){
                        
    $return[] = array('title'=>$haystack['title'],'field'=>$chiave);
                    }
                }
            }
        return 
    $return;
    }

        
    $json '[
            {"title":"Internship","Internship":{"title":"How to Create an RSS Feed with PHP and MySQL","country":"ITALY","Sector":"TEST"}},
            {"title":"Coding","Coding":{"title":"How to dev with Php","country":"FRANCE","Sector":"TESTFRANCE"}},
            {"title":"Developing","Developing":{"title":"How to dev (second edition) with Php","country":"FRANCE","Sector":"TESTSECONDFRANCE"}}
        ]'
    ;
        
        
    $parola_da_cercare 'FRANCE';
        
    $elenco json_decode($json,true);
        
    $result recursive_array_search($parola_da_cercare,$elenco);
        if(empty(
    $result)){
            echo 
    'Nessun record trovato';
        }
        else{
            echo 
    'trovati '.count($result).' record per "'.$parola_da_cercare.'"<br>';
            foreach(
    $result as $row){
                echo 
    'trovato nel libro "'.$row['title'].'", nel campo '.$row['field'].'<br />';
            }
        }
    Pensate i programmi a librerie, e innalzate il livello d'astrazione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.