Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581

    Ricerca in array multidimensionale con chiavi

    Ho un array multidimensionale che popolo in un ciclo con questa istruzione:
    Codice PHP:
        $arr_loc[] = array('id' => valore_num'localita' => "valore_txt"'zona' => "valore_txt"'provincia' => "valore_txt"); 
    Avrei necessità di verificare se all'interno dell'array ci sono determinati indici dove ad esempio la chiave id è uguale ad un determinato numero e, per farlo, pensavo di utilizzare
    Codice PHP:
    if(in_array(2$arr_loc)){
        print 
    "Nell'array è presente l'id 2";
    }else{
        print 
    "nessun id=2 presente";

    Il problema è che forzando la chiave id = 2 per tutti gli elementi dell'array, lanciando la funzione mi dice che non è presente nessun id=2

    se invece utilizzo
    Codice PHP:
    in_array(2$arr_loc["id"]) 
    mi da questo errore:
    codice:
    Warning: in_array() [function.in-array]: Wrong datatype for second argument in /var/www/vhosts*/*.php on line 15
    dove sbaglio?

  2. #2
    Ciao,

    nell'istruzione:
    Codice PHP:
    $arr_loc[] = array('id' => valore_num'localita' => "valore_txt"'zona' => "valore_txt"'provincia' => "valore_txt"); 
    associ ad "id" valore_num che così scritta è una costante, e se non è valorizzata nel momento in cui accedi ad essa ti da l'errore.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    ho scritto così per indicare un valore numerico o un valore testuale, dentro ci sono i relativi valori

  4. #4
    Io farei una cosa del genere:

    Codice PHP:
    function quanti_indici ($mio_array,$mio_indice) {

       
    $count 0;

       foreach (
    $mio_array as $key => $valore) {

          if (
    $key==$mio_indice) {$count++;}

       }

       return 
    $count;



  5. #5
    Ok allora il problema è che facendo
    Codice PHP:
    $arr_loc[] = array('id' => valore_num'localita' => "valore_txt"'zona' => "valore_txt"'provincia' => "valore_txt"); 
    l'array viene aggiunto nella prima posizione disponibile della'rray $arr_loc quindi o ti riferisci all'array con il giudto indice oppure segui il consiglio di CommoLink.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  6. #6
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    sembra che abbia risolto!
    Ho creato una funzione che ha parametri array di interesse ed espressioni di ricerca che possono essere un array
    Magari può essere utile o migliorabile

    Codice PHP:
    function cercaInArray($array$espressione){
        
    $risultato = array();
        
    $espressione preg_replace"/([^\s]+?)(=|<|>|!)/""\$a['$1']$2"implode(" AND "$espressione));
        foreach(
    $array as $a){
            if(eval(
    "return $espressione;")){
                
    $risultato[] = $a;
            }        
        }
        return 
    $risultato;
    }

    $arr_loc = array();
    for(
    $x=$x<$x++){
        switch(
    $x){
            case 
    1:
            case 
    3:
                
    $valore 1;
                break;
            case 
    2:
            case 
    4:
                
    $valore 2;
                break;
            default:
                
    $valore 0;
        }
        
        
    $arr_loc[] = array('id' => $valore'localita' => "loc$x"'zona' => "zona$x"'provincia' => "prov".($x+2));
    }

    $indici_estratti cercaInArray($arr_loc, array("id>=0""id<=1"));
    print_r($arr_loc);
    print 
    "

    "
    ;
    if(
    count($indici_estratti)!=0){
        print 
    "Ci sono risultati
    "
    ;
    }else{
        print 
    "NON ci sono indici estratti";
    }
    print 
    "DIM indici_estratti=".count($indici_estratti). "
    "
    ;
    print_r($indici_estratti); 

  7. #7
    Codice PHP:

    function filtraById($el){

    if(!
    array_key_exists('id',$el))
       return 
    false;

    if(
    $el['id']>=&& $el['id']<=5)
       return 
    true;

    return 
    false;

    }

    ...
    ...
    $arr_loc[] = array('id' => $valore'localita' => "loc$x"'zona' => "zona$x"'provincia' => "prov".($x+2));
    ...
    ...
    $risultati array_filter($arr_loc,'filtraById'); 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    santino avevo visto anche io l'array_filter, ma ho la necessità di dover indicsare più parametri di ricerca, tra l'altro spesso con valori dinamici

  9. #9
    Originariamente inviato da Fichico
    santino avevo visto anche io l'array_filter, ma ho la necessità di dover indicsare più parametri di ricerca, tra l'altro spesso con valori dinamici
    che versione di php usi?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    Originariamente inviato da Santino83_02
    che versione di php usi?
    5.2.6-1+lenny9

    c'è un modo per la funzione da indicare in array_filter di poter specificare dei parametri?

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.