- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aggiungere un nuovo elemento ad un Array
-
[...]
[php]
$maggiorenne = 'minorenne'; //? czé?
[/php]ma bensi`[php]
$maggiorenne = false;
[/php]con $maggiorenne che diventa booleana.per aggiungere un elemento a un array, di qualsiasi natura puoi usare:
[php]
array_push(array &$array, zval $elemento);
[/php]ciao!@criccroc said:
Ho la seguente necessità:
Vorrei AGGIUNGERE un nuovo elemento ad un ARRAY già esistente come da esempio in questo caso:[php]$sql = "SELECT * FROM abitanti";
$query = @mysql_query($sql);while ($risultato = @mysql_fetch_array($query)) {
$nome = $risultato['nome'];
$cognome = $risultato['cognome'];
$figli = $risultato['figli'];
......
[/php]A questo punto vorrei inserire un NUOVO ARRAY (che NON E' UN CAMPO DEL DATABASE) chiamato MAGGIORENNE usando ad esempio questo sistema:
[php]
IF ($risultato['anni'] < 19 {
$maggiorenne = "MINORENNE";
} else {
$maggiorenne = "MAGGIORENNE";
}[/php]Cosi facendo però ho semplicemente creato una VARIABILE ($maggiorenne) che cambierà di volta in volta in base al campo ANNI.
Io invece vorrei aggiungerla nell'array, esempio: $risultato['maggiorenne'].Spero di essermi spiegato bene e attendo vostro aiuto.
-
Io non ho mai sopportato frasi di questo tipo:
**"Mh credo che la divinita` della logica si stia rigirando nell'olimpo, non credo abbia senso dichiarare qualcosa come " **
PERCHE? Perchè in tutti i casi anche se qualcosa fosse errata nel ragionamento, io personalmente trovo questo un sistema poco piacevole come STILE!
Ma andiamo a vedere CHI in realtà dovrebbe far girare un qualcuno nell'olimpo
Se io scrivo un qualcosa del genere:
[php]$maggiorenne = "MINORENNE"; [/php]vuol dire che assegno ad una variabile una parola: MINORENNE, la quale parola verrà poi utilizzata in qualche modo. Esempio
[php]ECHO "Mario è " . $maggiorenne; // Genera Mario e' MINORENNE.[/php]Se utilizzassi quello che tu hai scritto:
[php]$maggiorenne = false; [/php]otterrei la seguente frase:
[php]ECHO "Mario è " . $maggiorenne; // Genera Mario e' 0 (o niente o quello che sia).[/php]Chiarito questo punto, e chiarito che quello che ho scritto in precedenza ERA UN ESEMPIO (avrei potuto scrivere qualsiasi altra cosa tipo: $ciccia = "BISTECCA";)) concentriamoci sulla SOLUZIONE ovvero:VADO A STUDIARE MEGLIO questo:
[php]array_push(array &$array, zval $elemento);[/php]Vado a studiare CIAOOO
-
[...]
Non e
logicamente corretto quello che fai e il codice va
scritto:- per essere letto
- per essere eseguito dalle macchine
Detto questo:
[php]
$stato_giuridico = 'maggiorenne';
$stato_giuridico = 'minorenne';echo "Mario e' " . $stato_giuridico;
[/php]Ciao
-
Salve kxyz,
certi toni nei confronti degli utenti (in questo thread) e nei confronti dello staff e dello stesso forum (qui e qui) non sono accettabili.
Lo prevede sia il regolamento del forum che la più generale regola del rispetto delle persone.
La invito quindi ad utilizzare termini più rispettosi. Non sarà ripetuto!
-
Ho provato ad utilizzare il comando array_push ma non ho avuto il risultato voluto (forse lo ho scritto male..), e con l'occasione provo a spiegare nuovamente il problema con un altro esempio stavolta più chiaro
Immaginiamo di avere la tabella abitanti con un record simile:
nome = MARIO
cognome= ROSSI
figli = 4
anni = 41Vado ad aprire la tabella in questo modo ed inserisco i dati nell'array:
[php]$sql = "SELECT * FROM abitanti";
$query = @mysql_query($sql);while ($risultato = @mysql_fetch_array($query)) {
$result_featured[] = $risultato;
}[/php]Ora se volessi interrogare l'array basterebbe (AD ESEMPIO) scrivere una cosa del genere:[php]ECHO $risultato['nome'];[/php]otterrei come risultato **MARIO **e **FIN QUI TUTTO CHIARO!
**
Il mio obiettivo e' di INSERIRE NELL'ARRAY un altro elemento. Ad esempio con un IF vado a fare un controllo e scrivo:[php]IF ($risultato['anni'] < 19 {
$stato_giuridico = "MINORENNE";
} else {
$stato_giuridico = "MAGGIORENNE";
} [/php]Pertanto, anzichè utilizzare la variabile ($stato_giuridico) devo inserire questo valore in UN ALTRO ELEMENTO DELL'ARRAY affinchè nello stesso modo possa in futuro utilizzarlo cosi:[php]ECHO $risultato['stato_giuridico'];[/php] ed otterrei come risultato: MAGGIORENNE.
Come risolvere quindi il problema? GRACIAS
-
Sua magnificenza maesta
criccroc Mi permetta di offrirle l'attivita
dei miei polpastrelli in segno di rispetto e lealta`:[php]
$persone = array();
$sql = "SELECT * FROM abitanti";
$query = @mysql_query($sql);while ($risultato = @mysql_fetch_array($query)) {
extract( $risultato, EXTR_PREFIX_ALL, 'r' );
array_push( $persone, array(
'nome' => $r_nome,
'cognome' => $r_cognome,
'figli' => $r_figli,
'anni' => $r_anni
));
}
[/php](Sua maestami perdoni perche
non avevo voglia di scrivere/copiare/incollare $risultato[''] come array 4 volte e ho messo extract, ma va bene in entrambi i modi)Le porgo i miei omaggi
( )
@criccroc said:
Ho provato ad utilizzare il comando array_push ma non ho avuto il risultato voluto (forse lo ho scritto male..), e con l'occasione provo a spiegare nuovamente il problema con un altro esempio stavolta più chiaro
Immaginiamo di avere la tabella abitanti con un record simile:
nome = MARIO
cognome= ROSSI
figli = 4
anni = 41Vado ad aprire la tabella in questo modo ed inserisco i dati nell'array:
[php]$sql = "SELECT * FROM abitanti";
$query = @mysql_query($sql);while ($risultato = @mysql_fetch_array($query)) {
$result_featured[] = $risultato;
}[/php]Ora se volessi interrogare l'array basterebbe (AD ESEMPIO) scrivere una cosa del genere:[php]ECHO $risultato['nome'];[/php]otterrei come risultato **MARIO **e **FIN QUI TUTTO CHIARO!
**
Il mio obiettivo e' di INSERIRE NELL'ARRAY un altro elemento. Ad esempio con un IF vado a fare un controllo e scrivo:[php]IF ($risultato['anni'] < 19 {
$stato_giuridico = "MINORENNE";
} else {
$stato_giuridico = "MAGGIORENNE";
} [/php]Pertanto, anzichè utilizzare la variabile ($stato_giuridico) devo inserire questo valore in UN ALTRO ELEMENTO DELL'ARRAY affinchè nello stesso modo possa in futuro utilizzarlo cosi:[php]ECHO $result1['stato_giuridico'];[/php] ed otterrei come risultato: MAGGIORENNE.
Come risolvere quindi il problema? GRACIAS
-
@C-3PO said:
La invito quindi ad utilizzare termini più rispettosi. Non sarà ripetuto!
@kyxz said:
Sua magnificenza maesta
criccroc Mi permetta di offrirle l'attivita
dei miei polpastrelli in segno di rispetto e lealta`:(Sua maesta
mi perdoni perche
non avevo voglia di scrivere/copiare/incollare $risultato[''] come array 4 volte e ho messo extract, ma va bene in entrambi i modi)Le porgo i miei omaggi
-
[...]
Comunque: qualcun altro ha altre soluzioni oltre questa? Grazie.
-
[php]
$persone = array();
$sql = "SELECT * FROM abitanti";
$query = @mysql_query($sql);while ($risultato = @mysql_fetch_array($query)) {
extract( $risultato, EXTR_PREFIX_ALL, 'r' );
array_push( $persone, array(
'nome' => $r_nome,
'cognome' => $r_cognome,
'figli' => $r_figli,
'anni' => $r_anni,
'stato_giuridico' => (($r_anni < 18) ? 'minorenne' : 'maggiorenne')
));
}//accedi con
$persone[indice_intero]['stato_giuridico'];
[/php]
-
Salve kkyxz,
anche questo account viene bannato, in quanto registrato mediante e.mail temporanea. I dati di registrazione devono essere validi!
Qualora intendesse iscriversi nuovamente in questo forum la invito pertanto a mostrare maggior rispetto verso la struttura che la ospita.
-
Dopo una serie di prove accanite qua e la, a quanto pare ho trovato la risposta al problema, anche se sono convinto che e' da PERFEZIONARE:
Faccio un riassunto:
[php]
$sql = "SELECT * FROM abitanti";
$query = @mysql_query($sql);while ($risultato = @mysql_fetch_array($query)) {
$nome = $risultato['nome'];
$cognome = $risultato['cognome'];
$figli = $risultato['figli'];
...... [/php]a questo punto nella variabile $risultato ho l'array e posso interrogarlo come visto in questo esempio.
Per aggiungere un nuovo array che non esiste nel database ecco come ho proceduto:
[php]$nuovo_array = array('castani', 'capelli' => 'castani');
$risultato = array_merge($risultato, $nuovo_array); // Inserisce un nuovo elemento nell'array.[/php]Infatti, utilizzando questo comando:
[php]print_r($risultato);[/php]sarà possibile visualizzare tutti gli elementi inseriti nell'array (E NON IN UNA VARIABILE!!!).In realtà quello che mi serviva era un altra cosa.. ma il concetto è uguale:
[php]
// da inserire nel ciclo WHILE
IF ($risultato['anni'] < 19 {
$stato_giuridico = "MINORENNE";
} else {
$stato_giuridico = "MAGGIORENNE";
}$nuovo_array = array('$stato_giuridico', 'stato_giuridico' => '$stato_giuridico');
$risultato = array_merge($risultato, $nuovo_array); // Inserisce un nuovo elemento nell'array.[/php]Anche se EFFETTIVAMENTE questo è solo un esempio di ciò che volevo fare.
A questo punto, con un altro ciclo WHILE che interroga L'ARRAY, posso visualizzare il campo STATO GIURIDICO come se fosse inserito nella tabella utenti.Mi manca solo di capire se ho utilizzato correttamente il comando (CHE COMUNQUE FUNZIONA!!) e con l'occasione pongo un altra domanda:
se ARRAY_MERGE(....) AGGIUNGE un nuovo array, quale e' il comando che SOSTITUISCE un elemento dell'array (esempio: $result['cognome']) ?Spero comunque di essere stato di aiuto a qualcuno che ha incontrato lo stesso mio problema.
Grazie comunque per l'attenzione.
-
Volevo farti notare che nel nostro ordinamento giuridico
[PHP]
IF ($risultato['anni'] < 19 {
$stato_giuridico = "MINORENNE";
[/PHP]
Non è corretto in quanto prendendo l'intero del numero precedente a 19
è 18,quindi,per la legge sei maggiorenne;era giusto per non cadere in errore.
Per quanto riguarda cambiare il nome del campo in un'array,essendo
[PHP]
mysql_fetch_array
[/PHP]
un'riferimento ai dati associandoli sia con un array , sia con un valore associativo alle colonne,non può essere cambiato in quanto è parte di
un campo di tabella.
Per visualizzare,aggiungere ulteriori chiavi/valori multipli c'è un'altra strada
che in un colpo solo può fare multiarray,purtroppo,in questo momento scrivo dalla spagna e non ho con me il manuale,quando rientro se non hai risolto ti indico come proseguire.
-
@vnt54 said:
Volevo farti notare che nel nostro ordinamento giuridico
[php]
IF ($risultato['anni'] < 19 {
$stato_giuridico = "MINORENNE";
[/php]Non è corretto.....Hai ragione anche tu :), ma come dicevo era un ESEMPIO (SBAGLIATO) e non mi stavo minimamente preoccupando se 18 o 19 era valido. Comunque GIUSTA CORREZIONE.
Per quanto riguarda il SE FUNZIONA O NO, io per ora ho risolto il problema, forse non nella "PROGRAMMAZIONE CORRETTA".
Per quanto riguarda la SOSTITUZIONE, so che esiste un ARRAY_REPLACE che appunto sostituisce valori nell'array. Lo ho provato ma senza risultati.
Termino dicendo che i comandi che ho impostato io in questo esempio, non vanno assolutamente a toccare la tabella, ma la variabile ($risultato) che contiene in un array i dati provenienti dalla tabella.
Resto comunque in attesa (senza fretta) della tua risposta o di qualche altro utente ma giusto per PERFEZIONARE la procedura.Grazie dell'intervento.
-
premesso che in questa maniera l'array $risultato viene sovrascritto ogni ciclo di while e, quindi, se ti serve recuperare qualche valore dovrai nuovamente interrogare il DataBase ... secondo me ti basterebbe procedere in questa maniera:
[PHP]
// da inserire nel ciclo WHILE
IF ($risultato['anni'] < 19 {
$stato_giuridico = "MINORENNE";
} else {
$stato_giuridico = "MAGGIORENNE";
}
$risultato['stato_giuridico'] = $stato_giuridico;
[/PHP]per modificare il valore di un campo dell'array basta riassegnarlo:
[PHP]$result['cognome'] = 'Rossi';[/PHP]