[LatinaLUG] array associativi bidimensinali

arki arki.mailman@gmail.com
Ven 19 Giu 2015 19:35:25 CEST


Il 19/06/2015 12:00, latina-request@lists.linux.it ha scritto:
> From: Jusi Pomenti <jusipom@gmail.com>
> To: lug latina <latina@lists.linux.it>
> Subject: [LatinaLUG] array associativi bidimensinali
> Message-ID: <5582A05B.4040405@gmail.com>
> Content-Type: text/plain; charset=iso-8859-15; format=flowed
>
> Ciao,
> scusate,ho un problema in php  che non riesco a risolvere:
> se ho  qualcosa  del genere
>
> [...]
>
> ovviamente funziona finchè non arriva la seconda mail  che copre la prima
> Allora,quando  faccio l'ultima chiamata alla funzione add_attr.chiamando 
> la funzione array_key_exists.so che la  chiave "mail" esiste e fin qui è ok.
> il problema è che  quando devo aggiungere la seconda email,devo 
> trasformare "mail" in un array;come posso fare?
> Ciao e grazie.
Ciao, se ho capito cosa ti serve ti conviene cambiare approcio, invece
di modificare il tipo da string ad array usa direttamente array
bidimensionali

function add_attr(&$attr,$nome,$val)
     {
        // prima controlla se esiste gia almeno un elemento indicizzato
        // se si', li conta e increenta l'indice, altrimenti pone a 0
        $i = isset($attr[$nome]) ? count($attr[$nome])+1 : 0;
        // assegna il valore all'indice corretto senza sovrascrivere
        $attr[$nome][($i)]=$val;
     }

add_attr($b,"cn","Jusi Pomenti");
add_attr($b,"sn","Pomenti");
add_attr($b,"description","Programmetotre");
add_attr($b,"mail","jusipom@gmail.com");
add_attr($b,"mail","info@jusipom.it");

var_dump($b);

OUTPUT:

array(4) {
  ["cn"]=>
  array(1) {
    [0]=>
    string(12) "Jusi Pomenti"
  }
  ["sn"]=>
  array(1) {
    [0]=>
    string(7) "Pomenti"
  }
  ["description"]=>
  array(1) {
    [0]=>
    string(14) "Programmetotre"
  }
  ["mail"]=>
  array(2) {
    [0]=>
    string(17) "jusipom@gmail.com"
    [2]=>
    string(15) "info@jusipom.it"
  }
}

Se vuoi usare una matrice solo per le email devi inserire un controllo
su $nome=="mail" all'interno di add_attr()

arki





Maggiori informazioni sulla lista latina