[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