Gestione array multidimensionale

  • Creatore Discussione Creatore Discussione antoooo
  • Data di inizio Data di inizio

antoooo

Nuovo Utente
5 Gen 2022
11
0
1
Ciao a tutti,
per esercizio devo strutturare un array multimensionale contenente 5 dati di 10 persone, in seguito dichiarare una funzione che legga e stampi a video i dati memorizzati. Ho creato e strutturato l'array e definito la funzione, ma a video, a fine schermata viene stampato "1" che non avevo intenzione di visualizzare. Sicuramente ho commesso qualche errore, mi aiutereste a capire dove e come correggerlo? E se avete consigli su come strutturare e gestire meglio l'array sono bene accetti.
Ecco il codice che ho scritto:

PHP:
<?php
            function LeggiPersone($array)
            {
            $LeggiPersone=($array);
                foreach($array as $persona)
                {   
                print("<table border='1' align='center' cellspacing='0' cellpadding='25'>");
                print("<h3 align='center'><b>SCHEDA ANAGRAFICA</b></h3><br>");
                foreach($persona as $k=>$v)
                {
                print("<tr>");
                print_r("<td width=‘150px’ align='center' valign='middle'>$k:</td><td width=‘300px’ align='center' valign='middle'>$v</td>");
                print("</tr>");
                }
            print("</table>");
            print("<br>");
            }   
            return $LeggiPersone=true;
            }
        ?>
        <?php
            $array=[
            [
            "Nome"=>"Nome1",
            "Cognome"=>"Cognome1",
            "Data di nascita"=>"01/01/1981",
            "Luogo di nascita"=>"Roma",
            "Codice fiscale"=>"ABCDEF01G23H445I",
            ],
            [
            "Nome"=>"Nome2",
            "Cognome"=>"Cognome2",
            "Data di nascita"=>"21/02/1982",
            "Luogo di nascita"=>"Pisa",
            "Codice fiscale"=>"LMNOPQ67R89S012T",
            ],
            [
            "Nome"=>"Nome3",
            "Cognome"=>"Cognome3",
            "Data di nascita"=>"11/03/1983",
            "Luogo di nascita"=>"Matera",
            "Codice fiscale"=>"DEFABC34G23H445H",
            ],
            [
            "Nome"=>"Nome4",
            "Cognome"=>"Cognome4",
            "Data di nascita"=>"15/04/1984",
            "Luogo di nascita"=>"Torino",
            "Codice fiscale"=>"NMRDEF01G23H566F",
            ],
            [
            "Nome"=>"Nome5",
            "Cognome"=>"Cognome5",
            "Data di nascita"=>"07/06/1985",
            "Luogo di nascita"=>"Brindisi",
            "Codice fiscale"=>"BCEDRF55S23H445M",
            ],
            [
            "Nome"=>"Nome6",
            "Cognome"=>"Venezia",
            "Data di nascita"=>"01/07/1986",
            "Luogo di nascita"=>"Venezia",
            "Codice fiscale"=>"RVSRTR87G23S725C",
            ],
            [
            "Nome"=>"Nome7",
            "Cognome"=>"Cognome7",
            "Data di nascita"=>"01/08/1987",
            "Luogo di nascita"=>"Trapani",
            "Codice fiscale"=>"LNSBTT01G62M112I",
            ],
            [
            "Nome"=>"Nome8",
            "Cognome"=>"Cognome8",
            "Data di nascita"=>"01/05/1988",
            "Luogo di nascita"=>"Sassari",
            "Codice fiscale"=>"BRCNDR01S21I783K",
            ],
            [
            "Nome"=>"Nome9",
            "Cognome"=>"Cognome9",
            "Data di nascita"=>"14/09/1989",
            "Luogo di nascita"=>"Cosenza",
            "Codice fiscale"=>"MRTFLP15V26H189R",
            ],
            [
            "Nome"=>"Nome10",
            "Cognome"=>"Cognome10",
            "Data di nascita"=>"26/11/1990",
            "Luogo di nascita"=>"Napoli",
            "Codice fiscale"=>"PLMELN24J23Y641O",
            ],
            ];
            
            $LeggiPersone=LeggiPersone($array);
            {
            print_r($LeggiPersone."<br>");
            }
        ?>
Grazie per l'aiuto
 
Ciao, se non ho capito male devi ripetere per 10 volte (quante sono le persone inserite nell'array) alcuni comandi; io non userei il foreach (il forerach lo usi quando non conosci il numero di elementi dell'array (foreach per ogni), in questo caso invece lo sai: 10) per cui io userei un semplice ciclo for. A questo punto non è necessario, secondo me, utilizzare un altro ciclo (complicheresti solo le cose, olrtetutto, a occhio e croce, per come è strutturato l'array, non potresti nemmeno usarlo) bastano una serie di echo; comunque faccio qualche prova e ti faccio sapere. A presto





Zorro
 
Ultima modifica:
  • Like
Reactions: antoooo
insomma, dopo aver visto come é fatta l'array delle persone, diventa anche facile ...
PHP:
<?php
$array=
[[
    "Nome"=>"Nome1",
    "Cognome"=>"Cognome1",
    "Data di nascita"=>"01/01/1981",
    "Luogo di nascita"=>"Roma",
    "Codice fiscale"=>"ABCDEF01G23H445I",
],
[
    "Nome"=>"Nome2",
    "Cognome"=>"Cognome2",
    "Data di nascita"=>"21/02/1982",
    "Luogo di nascita"=>"Pisa",
    "Codice fiscale"=>"LMNOPQ67R89S012T",
],
[
    "Nome"=>"Nome3",
    "Cognome"=>"Cognome3",
    "Data di nascita"=>"11/03/1983",
    "Luogo di nascita"=>"Matera",
    "Codice fiscale"=>"DEFABC34G23H445H",
],
[
    "Nome"=>"Nome4",
    "Cognome"=>"Cognome4",
    "Data di nascita"=>"15/04/1984",
    "Luogo di nascita"=>"Torino",
    "Codice fiscale"=>"NMRDEF01G23H566F",
],
[
    "Nome"=>"Nome5",
    "Cognome"=>"Cognome5",
    "Data di nascita"=>"07/06/1985",
    "Luogo di nascita"=>"Brindisi",
    "Codice fiscale"=>"BCEDRF55S23H445M",
],
[
    "Nome"=>"Nome6",
    "Cognome"=>"Venezia",
    "Data di nascita"=>"01/07/1986",
    "Luogo di nascita"=>"Venezia",
    "Codice fiscale"=>"RVSRTR87G23S725C",
],
[
    "Nome"=>"Nome7",
    "Cognome"=>"Cognome7",
    "Data di nascita"=>"01/08/1987",
    "Luogo di nascita"=>"Trapani",
    "Codice fiscale"=>"LNSBTT01G62M112I",
],
[
    "Nome"=>"Nome8",
    "Cognome"=>"Cognome8",
    "Data di nascita"=>"01/05/1988",
    "Luogo di nascita"=>"Sassari",
    "Codice fiscale"=>"BRCNDR01S21I783K",
],
[
    "Nome"=>"Nome9",
    "Cognome"=>"Cognome9",
    "Data di nascita"=>"14/09/1989",
    "Luogo di nascita"=>"Cosenza",
    "Codice fiscale"=>"MRTFLP15V26H189R",
],
[
    "Nome"=>"Nome10",
    "Cognome"=>"Cognome10",
    "Data di nascita"=>"26/11/1990",
    "Luogo di nascita"=>"Napoli",
    "Codice fiscale"=>"PLMELN24J23Y641O",
]];

require_once 'myUtils/show_vars.php';

echo "<h3>array</h3>".show_var( $array )."<br />";  // visualizza struttura dell'array

echo CreaTabella($array);

die;

function CreaTabella($array)
{
    $tabella    = "<style>"
        . "th { text-align: center; vertical-align: middle; }"
        . "td { text-align: center; vertical-align: middle; }"
        . "</style>"

        . "<table border='1' align='center' cellspacing='0' cellpadding='25'>"
        . "<thead>"

        . "<tr>"
        . "<th colspan=6><h3 align='center'><b>SCHEDA ANAGRAFICA</b></h3></th>"
        . "</tr>"

        . "<tr>"
        . "<th>ID</th>"
        . "<th>Nome</th>"
        . "<th>Cognome</th>"
        . "<th>Data di nascita</th>"
        . "<th>Luogo di nascita</th>"
        . "<th>Codice fiscale</th>"
        . "</tr>"

        . "</thead>"
        . "<tbody>";

    foreach($array as $ID => $persona)
    {
        $row    = "<tr>"
        . "<td>"    . $ID                ."</td>"
        . "<td>"    . $persona["Nome"]        ."</td>"
        . "<td>"    . $persona["Cognome"]        ."</td>"
        . "<td>"    . $persona["Data di nascita"]    ."</td>"
        . "<td>"    . $persona["Luogo di nascita"]    ."</td>"
        . "<td>"    . $persona["Codice fiscale"]    ."</td>"
        . "</tr>";

        $tabella .= $row;
    }
    $tabella .= "</tbody>";
    $tabella .= "</table>";
    return $tabella;
}
?>

risultato,

1641897867329.png



qui trovi "sow_vars"
 
  • Like
Reactions: antoooo
Ciao,
ecco il codice; è sufficentemente commentato ma per qualsi dubbio......... a 'esposizione :) :p :)

PHP:
<?php
//dichiaro l'array bidimensionale ARRAY
$array=[
           ["Nome"=>"Nome1","Cognome"=>"Cognome1","Data di nascita"=>"01/01/1981",
            "Luogo di nascita"=>"Roma","Codice fiscale"=>"ABCDEF01G23H445I"],
            
           ["Nome"=>"Nome2","Cognome"=>"Cognome2","Data di nascita"=>"21/02/1982",
            "Luogo di nascita"=>"Pisa","Codice fiscale"=>"LMNOPQ67R89S012T"],
            
           ["Nome"=>"Nome3","Cognome"=>"Cognome3","Data di nascita"=>"11/03/1983",
            "Luogo di nascita"=>"Matera","Codice fiscale"=>"DEFABC34G23H445H"],
            
           ["Nome"=>"Nome4","Cognome"=>"Cognome4","Data di nascita"=>"15/04/1984",
            "Luogo di nascita"=>"Torino","Codice fiscale"=>"NMRDEF01G23H566F"],
            
            ["Nome"=>"Nome5","Cognome"=>"Cognome5","Data di nascita"=>"07/06/1985",
             "Luogo di nascita"=>"Brindisi","Codice fiscale"=>"BCEDRF55S23H445M"],
            
            ["Nome"=>"Nome6","Cognome"=>"Cognome6","Data di nascita"=>"01/07/1986",
             "Luogo di nascita"=>"Venezia","Codice fiscale"=>"RVSRTR87G23S725C"],
            
            ["Nome"=>"Nome7","Cognome"=>"Cognome7","Data di nascita"=>"01/08/1987",
             "Luogo di nascita"=>"Trapani","Codice fiscale"=>"LNSBTT01G62M112I"],
            
            ["Nome"=>"Nome8","Cognome"=>"Cognome8","Data di nascita"=>"01/05/1988",
             "Luogo di nascita"=>"Sassari","Codice fiscale"=>"BRCNDR01S21I783K"],
            
            ["Nome"=>"Nome9","Cognome"=>"Cognome9","Data di nascita"=>"14/09/1989",
             "Luogo di nascita"=>"Cosenza","Codice fiscale"=>"MRTFLP15V26H189R"],
            
            ["Nome"=>"Nome10","Cognome"=>"Cognome10","Data di nascita"=>"26/11/1990",
             "Luogo di nascita"=>"Napoli","Codice fiscale"=>"PLMELN24J23Y641O"],
       ];
//creo la tabella con le intestazioni TH
echo '<table border="1" width="800" cellspacing="0">';
echo '    <tr>';
echo '        <th height="40">Nome</th>';
echo '        <th>Cognome</th>';
echo '        <th>Data di nascita</th>';
echo '        <th>Luogo di nascita</th>';
echo '        <th>Codice fiscale</th>';
echo '    </tr>';
//creo il ciclo for
for ($ind=0;$ind<10;$ind++) {
     echo '    <tr>';
     $record=stampanomi($array,$ind);   //richiamo la funz. stampanomi, a cui passo
                                        //$array e il valore di $ind e ne memorizzo il risultato
                                        // nella variabilffe d'appoggio $record

     echo $record;    //quindi stampo il risultato
     echo '    </tr>';
}
echo '</table>';

//definisco la funzione STAMPANOMI
function stampanomi($nomi,$i) {
    //costruisco la variabile $record (occhio al punto)
    $record='<td height="28"><center>'.$nomi[$i]['Nome'].'</center></td>';
    $record.='<td><center>'.$nomi[$i]['Cognome'].'</center></td>';
    $record.='<td><center>'.$nomi[$i]['Data di nascita'].'</center></td>';
    $record.='<td><center>'.$nomi[$i]['Luogo di nascita'].'</center></td>';
    $record.='<td><center>'.$nomi[$i]['Codice fiscale'].'</center></td>';
    return $record;
}
?>

Un consiglio: ti conviene indentare meglio il codice; è solo una questone puramente estetica mas risulta più leggibile.



Zorro
 
  • Like
Reactions: antoooo
Grazie mille, sono i miei primi script e sono ancora un pò imbranata :p
Inizio a capirci qualcosa in più.
Siete stati di grande aiuto, grzie ancora
 

Discussioni simili