array associativo

Buongiorno, ho un dubbio sull'array associativo.

<?php
$stipendi=array("Operaio"=>280, "Geometra"=>290,"Ingegnere"=>450.00);
$lavoratori = array("Operaio"=>'Franco', "Geometra"=>'Roberto',"Ingegnere"=>'Fausto');
        while(list($fun,$compenso)= each ($stipendi))
        {
        echo "$lavoratori[$fun], $fun percepisce uno stipendio stimato di \t $compenso<br>";
        }
        
?>

Dunque come si può vedere dal codice funzionante, nell'istruzione while(list()...... le variabili $fun e $compenso, assumono di volta in volta i valori rispettivamente di: $fun =>lavoratori e $compenso =>stipendi.

Il mio dubbio è perchè gli vengono passati valori dal baso verso l'altro. Cioè $stipendi e l'array dichiarato per prima, invece alla variabile while(list($fun.......) vengono passati valori di $lavoratori mentre al $compenso quelli degli stipendi. C'è una ragione particolare del perchè?   :-\

inviato 11 anni fa
TrxWeb
X 0 X

Forse stai facendo confusione (o non ho capito cosa volevi dire  :P )

Ad ogni iterazione:

  $fun assume il nome di una chiave di $stipendi

  $compenso assume il valore di $stipendi associato alla chiave assegnata a $fun

L'array $lavoratori non viene interessato minimamente dall'istruzione list.

prova questo script, ti verranno mostrati i valori assegnati a $fun e $compenso:

<?php
$stipendi=array("Operaio"=>280, "Geometra"=>290,"Ingegnere"=>450.00);
while(list($fun,$compenso)= each ($stipendi))
{
   echo "\$fun = $fun, \$compenso = $compenso <br>";
}
?>

nota che ho solo cambiato l'istruzione echo e che ho tolto l'array $lavoratori poiché ininfluente.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Dunque, ricapitolando, questo è l'output che mi genera con il codice sopra riportato, che altro non è lo scopo voluto dal codice.

        while(list($fun,$compenso)= each ($stipendi))

echo $operai : sereve per indicare il nome dell'operaio

[$fun] preleva il valore dell'operaio nel mio caso i nomi

quindi $compenso lo stipendio, tralasciando le altre cose che ho inserito.

Cmq l'output è il seguente

Franco [preso da [$fun] che gli viene passato il valore dall'array operai], Programmatore [preso da $fun anche in questo caso prende il valore dall'array operai, ma stavolta prende la chiave] percepisce uno stipendio stimato di 280 [preso da $compenso che gli viene passata dall'array stipendio]

Roberto, Designer percepisce uno stipendio stimato di 290)

Domenico, Commerciale percepisce uno stipendio stimato di 450)

Come puoi vedere il valore passato a [$fun] e il secondo array dichiarato e non il primo come dovrebbe essere per logica.

Scusa se faccio esempi elementari, ma è necessario sopratutto per me altrimenti fondo :uglystupid:

risposto 11 anni fa
TrxWeb
modificato 11 anni fa
X 0 X

vediamo se ho capito il punto che crea confusione:

"Franco" NON viene da $fun ma da $lavoratori

$fun in fatti contiene le chiavi di $stipendi

Alla prima iterazione $fun vale "Operaio" mentre $compenso = 280

$lavoratori[$fun] non è altro che $lavoratori["Operaio"] e quindi vale "Franco"

Alla seconda iterazione $fun vale "Geometra" mentre $compenso = 290

$lavoratori[$fun] non è altro che $lavoratori["Geometra"] e quindi vale "Robero"

Alla terza iterazione $fun vale "Ingegnere" mentre $compenso = 450

 $lavoratori[$fun] non è altro che $lavoratori["Ingegnere"] e quindi vale "Fausto"

Se non ti ho chiarito il problema dimmi almeno se sei daccordo sui passaggi che ho appena descritto.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ho capito, ma il seguente spezzone di codice

echo "$lavoratori[$fun],$fun, $compenso";

non dice a [$fun] tra parentesi di prendere il valore passato da $lavoratori, quindi Franco?

$fun invece solo la chiave, quindi operaio preso da $stipendi o anche da $lavoratori (io pensavo quest'ultima ipotesi)?

ed infice $compenso che prende i valori da $stipendi?

risposto 11 anni fa
TrxWeb
X 0 X

Come ti ho scritto prima $fun prende le chiavi di $stipendi e l'espressione:

$lavoratori[$fun]

significa: prendi il valore di $lavoratori associato alla chiave messa tra parentesi quadre, cioé il valore di $fun.

Chiaro?  :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Chiaro.

Denghiu very grazie  :D

 O0

risposto 11 anni fa
TrxWeb
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda