Array e foreach

  • Creatore Discussione Creatore Discussione olGerva
  • Data di inizio Data di inizio

olGerva

Nuovo Utente
11 Giu 2008
14
0
0
GoodWeb

Esiste un modo per passare una variabile alla funzione / ciclo foreach?
Mi spiego meglio, la funzione foreach prevede la sintassi seguente: foreach ($array as $valore)
dove $array è il nme dell'array da manipolare.

Ora io ho diversi array di cui conosco il nome e sul quale effettuo delle verifiche, una volta terminate tali verifiche vorrei che il ciclo foreach mi caricasse l'array che desidero.
esempio
PHP:
if ($id==0) {
$array = $pippo;
}else {
$array = $pluto;
}

foreach ($array ....)

Spero di essermi speigato
Grazie
 
Sicuramente è possibile farlo, ma tieni presente che con un'assegnazione di questo tipo $array = $pluto viene creata una copia del vettore e le (eventuali) modifiche fatte su uno non si riflettono sull'altro.
In alternativa puoi usare $array come un puntatore a $pluto in questo modo: $array = &$pluto, per ottenere il risultato opposto.
 
Sicuramente è possibile farlo, ma tieni presente che con un'assegnazione di questo tipo $array = $pluto viene creata una copia del vettore e le (eventuali) modifiche fatte su uno non si riflettono sull'altro.
In alternativa puoi usare $array come un puntatore a $pluto in questo modo: $array = &$pluto, per ottenere il risultato opposto.

Grazie per la risposta,
ma sinceramente non ho capito bene cosa intendi. Sono alle prime armi, diciamo chi mi barcameno da circa due mesi sull'argomento PHP, quindi tutto quello che posso apprendere è utile e sicuramente interessante per il mi proseguo....

Questo è come ho modificato lo script e così funge, doppio segno di $$
PHP:
if ($id==0) {
$array = $pippo;
}else {
$array = $pluto;
}

foreach ($$array ....)
Potresti darmi ulteriori dettagli?
Grazie
 
Quanti problemi inutili.
PHP:
if ($id==0) { 
$array = $pippo; 
}else { 
$array = $pluto; 
} 

foreach ($array ....)
Questo va più che bene.
Usa questo e non avrai problemi.
Lascia perdere tutto il resto... nella programmazione bisogna trovare la via più breve e crearsi problemi inutili complica solo inutilimente le cose.
 
Mmmm
Sinceramente la versione iniziale e quella che mi stai suggerendo non funge .....
In pratica alla lettura di foreach mi ritorna errore (non ricord precisamente ma mi sebra di ricordare che dica di non trovare index dell'array)

Mi spiego meglio....
Io ho diversi data base di TESTO non MySQL, e tutti iniziano con il valore dell'array differente
es. $cat_primo = array () / $cat_pluto = array () ....

Ora dando per scontato che la prima parte cat_ è uguale per tutti i miei DB, rimane la necessità di sapere cosa viene subito dopo.
Non volendo gestire in modo statico questa operazione, ho strutturato il tutto in modo tale che ogni singolo file DB ha un'assonanza con la pagina creata ....

Così con un semplice ciclo switch posso confrontare la pagina con il db e ricavare il suo parametro.

L'unico modo che ho trovato per passare questo parametro al comando foreach è stato quello di mettere due segni di $$ alla variabile
PHP:
swicht $db (
case "primo"
$db_valore = "cat_primo"
....
)

foreach $$db_valore as .....

E' probabile che questa soluzione non sia delle miglori, ma considera che da soli due mesi smanetto con PHP è le mie origini sono quelle di un perito 'meccanico' e fallito ingegnere 'meccanic' ;-)
Ciò nonostante credo di aver svolto un discreto lavoro come prima esperienza che puoi vedere in firma. La prima versione e la nuova versione in sequenza.

Grazie
 

Discussioni simili