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

    parsing array multidimensionale

    Buongiorno,
    ho un problema con un array derivqanti da questa parte di codice:

    codice:
      foreach($partecipa as $valore){
           // echo("VALORE: ".$valore["id_allievo"]);
            $Ssync="SELECT .....";
            
            $sync = myDB::arraySQL($Ssync);
           
            foreach($sync as $value2){
                array_push($arr_sync,$value2);
                
                $array_schede=array(
                    "scheda" => $value2["scheda"]
                );
                echo($value2["scheda"]);
              
            }
    
    
        }
    che come risultato dell' echo mi da questo:

    codice:
    [
        {
            "id": "1",
            "pos": 1,
            "risposta": 2,
            "dbPos": 7162
        },
        {
            "id": "10",
            "pos": 2,
            "risposta": 1,
            "dbPos": 7
        },
        {
            "id": "100",
            "pos": 3,
            "risposta": 2,
            "dbPos": 86
        },
        {
            "id": "1000",
            "pos": 4,
            "risposta": 1,
            "dbPos": 957
        }
    ]
    [
        {
            "id": "1",
            "pos": 1,
            "risposta": 1,
            "dbPos": 7162
        },
        {
            "id": "2",
            "pos": 2,
            "risposta": 2,
            "dbPos": 0
        },
        {
            "id": "3",
            "pos": 3,
            "risposta": 1,
            "dbPos": 1
        },
        {
            "id": "4",
            "pos": 4,
            "risposta": 1,
            "dbPos": 2
        },
        {
            "id": "5",
            "pos": 5,
            "risposta": 2,
            "dbPos": 3
        },
        {
            "id": "12",
            "pos": 6,
            "risposta": 2,
            "dbPos": 9
        },
        {
            "id": "22",
            "pos": 7,
            "risposta": 2,
            "dbPos": 19
        },
        {
            "id": "32",
            "pos": 8,
            "risposta": 1,
            "dbPos": 28
        },
        {
            "id": "10",
            "pos": 9,
            "risposta": 1,
            "dbPos": 7
        },
        {
            "id": "100",
            "pos": 10,
            "risposta": 2,
            "dbPos": 86
        },
        {
            "id": "1000",
            "pos": 11,
            "risposta": 1,
            "dbPos": 957
        }
    ][]
    cioè 3 credo siano oggetti ma non ne sono sicuro, come faccio ad estrarre da questi 3 "oggetti"(in realtà 2, uno è vuoto) i campi "id","risposta"?

    qualche idea?
    Grazie in anticipo

  2. #2
    Li passi ad https://www.php.net/array_map e ricostruisci l'array come preferisci.

    Oppure un semplice https://www.php.net/foreach e riassegni ciò che ti serve in un altro array.

  3. #3
    Come vedi sono 2 foreach annidati derivanti da 2 query quindi non mi serve a molto guardare il foreach, avrei bisogno di un esempio pratico.

  4. #4
    La voglia di fare, questa sconosciuta...

    codice:
    $array = [    [
            'key' => 1,
            'value' => 'A',
        ],
        [
            'key' => 2,
            'value' => 'B',
        ],
        [
            'key' => 3,
            'value' => 'C',
        ],
        [
            'key' => 4,
            'value' => 'D',
        ],
    ];
    
    
    $results = [];
    
    
    foreach ($array as $item) {
        $results[$item['key']] = $item['value'];
    }
    
    
    print_r($results);
    Potresti fare una cosa così, ma dipende molto da che dati hai in input (non sono certo siano quelli che hai riportato) e che cosa vuoi in output (altra cosa che non hai chiarito molto bene).

    A ben pensarci, anche una letta a https://www.php.net/json_decode potrebbe essere utile.
    Ultima modifica di filippo.toso; 21-07-2021 a 17:34

  5. #5
    Da questo:
    codice:
     foreach($partecipa as $valore){
    
    
            $listato=$valore["listato"];
           // echo("VALORE: ".$valore["id_allievo"]);
            $Ssync="SELECT * FROM sync
                    WHERE id_allievo=". $valore["id_allievo"] . "
                    ORDER BY dataFine DESC
                    LIMIT 1";
            
            $sync = myDB::arraySQL($Ssync);
    
    
            array_push($arr_allievi,$valore["id_allievo"]);
           
            foreach($sync as $value2){
                array_push($arr_sync,$value2);
    
    
            }
    
    
    
    
        }
    
    
        echo json_encode($arr_sync);
    che da come risultato dell' echo questo:
    codice:
    [
        {
            "id_sync": "152937554",
            "id_allievo": "708179",
            "tipo": "TipoEsame",
            "dataInizio": "2021-07-16T11:59:29.683Z",
            "dataFine": "2021-07-16T12:09:46.445Z",
            "errori": "20",
            "scheda": "[{\"id\":\"6990\",\"pos\":1,\"risposta\":1,\"dbPos\":6812},{\"id\":\"6859\",\"pos\":2,\"risposta\":1,\"dbPos\":6681},{\"id\":\"7060\",\"pos\":3,\"risposta\":1,\"dbPos\":6880},{\"id\":\"7162\",\"pos\":4,\"risposta\":1,\"dbPos\":6980},{\"id\":\"6957\",\"pos\":5,\"risposta\":1,\"dbPos\":6779},{\"id\":\"7133\",\"pos\":6,\"risposta\":1,\"dbPos\":6951},{\"id\":\"7039\",\"pos\":7,\"risposta\":1,\"dbPos\":6861},{\"id\":\"6858\",\"pos\":8,\"risposta\":1,\"dbPos\":6680},{\"id\":\"6877\",\"pos\":9,\"risposta\":1,\"dbPos\":6699},{\"id\":\"6925\",\"pos\":10,\"risposta\":1,\"dbPos\":6747},{\"id\":\"6970\",\"pos\":11,\"risposta\":1,\"dbPos\":6792},{\"id\":\"7099\",\"pos\":12,\"risposta\":1,\"dbPos\":6917},{\"id\":\"6943\",\"pos\":13,\"risposta\":1,\"dbPos\":6765},{\"id\":\"6906\",\"pos\":14,\"risposta\":1,\"dbPos\":6728},{\"id\":\"6868\",\"pos\":15,\"risposta\":1,\"dbPos\":6690},{\"id\":\"6968\",\"pos\":16,\"risposta\":1,\"dbPos\":6790},{\"id\":\"7033\",\"pos\":17,\"risposta\":1,\"dbPos\":6855},{\"id\":\"6981\",\"pos\":18,\"risposta\":1,\"dbPos\":6803},{\"id\":\"7028\",\"pos\":19,\"risposta\":1,\"dbPos\":6850},{\"id\":\"6986\",\"pos\":20,\"risposta\":1,\"dbPos\":6808},{\"id\":\"6881\",\"pos\":21,\"risposta\":1,\"dbPos\":6703},{\"id\":\"6964\",\"pos\":22,\"risposta\":1,\"dbPos\":6786},{\"id\":\"6961\",\"pos\":23,\"risposta\":1,\"dbPos\":6783},{\"id\":\"7164\",\"pos\":24,\"risposta\":1,\"dbPos\":6982},{\"id\":\"7033\",\"pos\":25,\"risposta\":1,\"dbPos\":6855},{\"id\":\"6841\",\"pos\":26,\"risposta\":1,\"dbPos\":6666},{\"id\":\"6876\",\"pos\":27,\"risposta\":1,\"dbPos\":6698},{\"id\":\"6953\",\"pos\":28,\"risposta\":1,\"dbPos\":6775},{\"id\":\"7110\",\"pos\":29,\"risposta\":1,\"dbPos\":6928},{\"id\":\"7037\",\"pos\":30,\"risposta\":1,\"dbPos\":6859},{\"id\":\"6845\",\"pos\":31,\"risposta\":1,\"dbPos\":6669},{\"id\":\"7008\",\"pos\":32,\"risposta\":1,\"dbPos\":6830},{\"id\":\"7162\",\"pos\":33,\"risposta\":1,\"dbPos\":6980},{\"id\":\"7062\",\"pos\":34,\"risposta\":1,\"dbPos\":6882},{\"id\":\"6957\",\"pos\":35,\"risposta\":1,\"dbPos\":6779},{\"id\":\"6898\",\"pos\":36,\"risposta\":1,\"dbPos\":6720},{\"id\":\"7059\",\"pos\":37,\"risposta\":1,\"dbPos\":6879},{\"id\":\"6977\",\"pos\":38,\"risposta\":1,\"dbPos\":6799},{\"id\":\"6833\",\"pos\":39,\"risposta\":1,\"dbPos\":6658},{\"id\":\"6938\",\"pos\":40,\"risposta\":1,\"dbPos\":6760}]",
            "domande": "40",
            "_Stato": "",
            "argomento": "",
            "stat": "",
            "SelTotDub": "false",
            "SelDub": "false"
        },
        {
            "id_sync": "152937538",
            "id_allievo": "708164",
            "tipo": "",
            "dataInizio": "2021-04-23T10:45:24.475Z",
            "dataFine": "2021-04-23T14:09:53.086Z",
            "errori": "2",
            "scheda": "[{\"id\":\"1\",\"pos\":1,\"risposta\":2,\"dbPos\":7162},{\"id\":\"10\",\"pos\":2,\"risposta\":1,\"dbPos\":7},{\"id\":\"100\",\"pos\":3,\"risposta\":2,\"dbPos\":86},{\"id\":\"1000\",\"pos\":4,\"risposta\":1,\"dbPos\":957}]",
            "domande": "4",
            "_Stato": "",
            "argomento": "",
            "stat": "",
            "SelTotDub": "false",
            "SelDub": "false"
        },
        {
            "id_sync": "152937539",
            "id_allievo": "708150",
            "tipo": "",
            "dataInizio": "2021-04-23T15:14:04.823Z",
            "dataFine": "2021-04-23T15:15:04.162Z",
            "errori": "4",
            "scheda": "[{\"id\":\"1\",\"pos\":1,\"risposta\":1,\"dbPos\":7162},{\"id\":\"2\",\"pos\":2,\"risposta\":2,\"dbPos\":0},{\"id\":\"3\",\"pos\":3,\"risposta\":1,\"dbPos\":1},{\"id\":\"4\",\"pos\":4,\"risposta\":1,\"dbPos\":2},{\"id\":\"5\",\"pos\":5,\"risposta\":2,\"dbPos\":3},{\"id\":\"12\",\"pos\":6,\"risposta\":2,\"dbPos\":9},{\"id\":\"22\",\"pos\":7,\"risposta\":2,\"dbPos\":19},{\"id\":\"32\",\"pos\":8,\"risposta\":1,\"dbPos\":28},{\"id\":\"10\",\"pos\":9,\"risposta\":1,\"dbPos\":7},{\"id\":\"100\",\"pos\":10,\"risposta\":2,\"dbPos\":86},{\"id\":\"1000\",\"pos\":11,\"risposta\":1,\"dbPos\":957}]",
            "domande": "11",
            "_Stato": "",
            "argomento": "",
            "stat": "",
            "SelTotDub": "false",
            "SelDub": "false"
        },
        {
            "id_sync": "152937555",
            "id_allievo": "708194",
            "tipo": "START",
            "dataInizio": "2021-07-19T10:58:09.818Z",
            "dataFine": "2021-07-19T10:58:09.818Z",
            "errori": "0",
            "scheda": "[]",
            "domande": "0",
            "_Stato": "",
            "argomento": "",
            "stat": "",
            "SelTotDub": "false",
            "SelDub": "false"
        }
    ]
    Avrei bisogno per ogni id_allievo di avere un array contenente simile a questo:

    codice:
    [
        {
            "id_quiz": "6990",
            "listato": "AB1",
            "risposta": "1"
        },
        {
            "id_quiz": "1",
            "listato": "AB1",
            "risposta": "2"
        },
        {
            "id_quiz": "100",
            "listato": "AB1",
            "risposta": "1"
        }
    ]
    derivante da quello che ho messo all' inizio cioè la scheda (senza listato che derivo da un altra parte).
    Ultima modifica di Maxilboss93; 21-07-2021 a 17:51

  6. #6
    Ho trovato la soluzione, semplicemente non istanziavo correttamente il nuovo array multidimensionale all' interno del ciclo:
    [CODE]
    foreach($partecipa as $valore){

    $listato=$valore["listato"];
    // $listato2=$valore["listato"];
    /* if($listato=="AB1"){
    $listato="AB";
    }*/
    // echo("VALORE: ".$valore["id_allievo"]);
    $Ssync="SELECT * FROM sync
    WHERE id_allievo=". $valore["id_allievo"] . "
    AND scheda NOT LIKE '[]'
    ORDER BY dataFine DESC
    LIMIT 1";

    $sync = myDB::arraySQL($Ssync);


    array_push($arr_allievi,$valore["id_allievo"]);

    foreach($sync as $value2){

    $num_quesiti=$value2["domande"];
    array_push($arr_sync,$value2);


    // echo json_encode($value2["scheda"]);
    $arr_scheda=array(
    "id_allievo"=>$value2["id_allievo"],
    "scheda" =>json_decode($value2["scheda"],true)
    );


    array_push($arr_tutto["scheda"],$arr_scheda);

    }

    }

    /*PER OGNI ALLIEVO: */

    while($l<sizeof($arr_tutto["scheda"])){


    for($i=0;$i<sizeof($arr_tutto["scheda"][$l]["scheda"]);$i++){
    $scheda=$arr_tutto["scheda"][$l]["scheda"];
    // echo json_encode($scheda[$i]["id"]);

    $Srx="SELECT id,Risposta,fileListato
    FROM quiz
    WHERE listato='".$listato."'
    AND id='".$scheda[$i]["id"]."'";

    $risposte = myDB::arraySQL($Srx);


    foreach($risposte as $rx){
    //echo json_encode($rx);
    if($rx["Risposta"]=="TRUE"){
    $rx["Risposta"]=1;
    }else{
    $rx["Risposta"]=0;
    }

    if($scheda[$i]["id"]==$rx["id"]){
    if($rx["Risposta"]==$scheda[$i]["risposta"]){
    $rispostaok=1;
    }else{
    $rispostaok=0;
    }
    }


    $fileListato= $rx["fileListato"];

    $arr_idmaster=array(
    "id".$scheda[$i]["pos"] => $scheda[$i]["id"],
    "rispostaok" => $rispostaok
    );

    array_push($arr_tuttook["arr_idmaster_rispostaok"],$arr_idmaster);

    }
    }


    $arr_schede_sync=array(
    "id_allievo"=>$arr_tutto["scheda"][$l]["id_allievo"],
    "tempo_scheda" => $tempo_passato[$l],
    "arr_idmaster_rispostaok"=>$arr_tuttook["arr_idmaster_rispostaok"]
    );


    array_push($arr_risultati["risultati"],$arr_schede_sync);
    // echo json_encode($arr_tuttook["arr_idmaster_rispostaok"]);
    $l++;
    }

    $Slistato="SELECT * FROM listato WHERE tipo='".$listato ."'";

    $listato= myDB::arraySQL($Slistato);


    foreach($listato as $list){
    $errori= $list["errori"];
    $domande= $list["domande"];
    }

    $arr_finale=array(
    "file_listato"=>$fileListato,
    "num_quesiti"=> $domande,
    "soglia_errori"=>$errori,
    "risultati"=>$arr_risultati["risultati"]
    );


    [CODE]
    Ultima modifica di Maxilboss93; 10-08-2021 a 10:43

Tag per questa discussione

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