Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    Funzione in_array() su array di composto array

    Ciao a tutti, il titolo del post non è uno scioglilingua
    ho creato un array formato a sua volta da array! Riesco a gestirlo quasi in tutto

    esempio:

    Codice PHP:
    <?php
        $arrPersone 
    = array(
                                array( 
    'nome' => "Veronica"'anni' =>30'sesso' => "femmina"), 
                                array( 
    'nome' => "Matteo"'anni' =>32'sesso' => "maschio"), 
                                array( 
    'nome' => "Giorgio"'anni' =>57'sesso' => "maschio"), 
                                array( 
    'nome' => "Sara"'anni' =>34'sesso' => "femmina"), 
                                array( 
    'nome' => "Emilio"'anni' =>32'sesso' => "maschio"), 
                            );
        
        foreach(
    $arrPersone as $persona){
            echo 
    $persona['nome'] .' &egrave; '$persona['sesso'] .' ed ha '$persona['anni'] .' anni. 
    '
    ;
        }
        
        echo 
    '<hr>';
        
        echo 
    "La persona con indice 2 si chiama: "$arrPersone[2]['nome'];        
    ?>
    Il problema nasce quando devo verificare l'esistenza di un valore con la funzione "in_array()"...

    non posso fare

    Codice PHP:
    if(in_array(32,$arrPersone['anni'])){


    perchè manca la label per il secondo livello di array...
    Sincermente sono bloccata

    Forse ho bisogno di un po di ferie che dite?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    A te basta che ci sia quel valore in un qualunque "sotto array" o come deve funzionare di preciso?

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    di preciso io ciclo un range di età e devo sapere se esiste una persona con quell'età!

    tipo:

    Codice PHP:
    for($i=10;$i<=20;$i++){
        if(
    in_array($i,$mioArray)){
           echo 
    '&egrave; presente una persona di '$i .' anni!
    '
    ;
        }else{
           echo 
    'NON &egrave; presente una persona di '$i .' anni!
    '
    ;
        }


  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Codice PHP:
    for($i=10;$i<=20;$i++)
    {
        
    $trovato false;
        foreach(
    $arrPersone as $persona
        {
            if(
    in_array($i,$persona))
            {
               echo 
    '&egrave; presente una persona di '$i .' anni!
    '
    ;
               
    $trovato true;
               break;
            }
        }
        if( ! 
    $trovato)
            echo 
    'NON &egrave; presente una persona di '$i .' anni!
    '
    ;


  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Grazie Al ma io volevo capire come usare la funzione "in_array()", il ciclo volevo evitarlo per non appesantire il codice! Non c'è alternativa?

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    ho provato anche ad "etichettare" gli array dentro quello principale con:

    Codice PHP:
        $arrPersone = array(
                                
    'persona' => array( 'nome' => "Veronica"'anni' =>30'sesso' => "femmina"), 
                                
    'persona' => array( 'nome' => "Matteo"'anni' =>32'sesso' => "maschio"), 
                                
    'persona' => array( 'nome' => "Giorgio"'anni' =>57'sesso' => "maschio"), 
                                
    'persona' => array( 'nome' => "Sara"'anni' =>34'sesso' => "femmina"), 
                                
    'persona' => array( 'nome' => "Emilio"'anni' =>32'sesso' => "maschio"), 
                            ); 
    Ma credo non sia la cosa giusta !

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Purtroppo penso di no, senza un altro ciclo non ci si dovrebbe riuscire.
    Ho dato un'occhiata alla documentazione di in_array(), tra i commenti c'è l'esempio di un array multidimensionale e lo risolvono con una funzione che contiene un ciclo while.

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Cavolo...la butto li:
    questo che ho messo qui era solo un esempio per esprimere il concetto e renderlo più chiaro ma nella pagina che sto sviluppando quella che qui è l'età sara un ID univoco, questo può cambiare un po le cose o siamo sempre nella stessa situazione?

    (il fatto che l'id si ripete solo una volta in tutto l'array e non ci siano duplicati intendo)

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Originariamente inviato da Veronica80
    ho provato anche ad "etichettare" gli array dentro quello principale con:

    Codice PHP:
        $arrPersone = array(
                                
    'persona' => array( 'nome' => "Veronica"'anni' =>30'sesso' => "femmina"), 
                                
    'persona' => array( 'nome' => "Matteo"'anni' =>32'sesso' => "maschio"), 
                                
    'persona' => array( 'nome' => "Giorgio"'anni' =>57'sesso' => "maschio"), 
                                
    'persona' => array( 'nome' => "Sara"'anni' =>34'sesso' => "femmina"), 
                                
    'persona' => array( 'nome' => "Emilio"'anni' =>32'sesso' => "maschio"), 
                            ); 
    Ma credo non sia la cosa giusta !
    Occhio, che se dai la stessa etichetta a tutte le entry, in realtà sovrascrivi continuamente la stessa e alla fine ci sarà un solo array, l'ultimo.
    Prova a fare
    print_r($arrPersone);
    vedi cosa stampa.

    Originariamente inviato da Veronica80
    Cavolo...la butto li:
    questo che ho messo qui era solo un esempio per esprimere il concetto e renderlo più chiaro ma nella pagina che sto sviluppando quella che qui è l'età sara un ID univoco, questo può cambiare un po le cose o siamo sempre nella stessa situazione?

    (il fatto che l'id si ripete solo una volta in tutto l'array e non ci siano duplicati intendo)
    No, non ti cambia niente, è comunque un valore da cercare in uno dei "sottoarray".
    Anche il codice che ti ho scritto prima cerca solo la prima occorrenza, poi stoppa il ciclo se la trova.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Ecco un'idea alternativa:

    Quando crei l'array $arrPersone, etichetta i sottoarray con l'id della persona corrispondente, così
    Codice PHP:
    $arrPersone = array(
                        
    => array( 'nome' => "Veronica"'anni' =>30'sesso' => "femmina"), 
                        
    13 => array( 'nome' => "Matteo"'anni' =>32'sesso' => "maschio"), 
                        
    14 => array( 'nome' => "Giorgio"'anni' =>57'sesso' => "maschio"), 
                        
    16 => array( 'nome' => "Sara"'anni' =>34'sesso' => "femmina"), 
                        
    27 => array( 'nome' => "Emilio"'anni' =>32'sesso' => "maschio"), 
                    );
    //gli id ovviamente li ho messi a caso 
    Poi la ricerca la fai così
    Codice PHP:
    if(array_key_exists(14,$arrPersone))
    {
        echo 
    "trovato";
    }
    else
    {
        echo 
    "non c'è";


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.