Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[PHP] Settare una Variabile in una Funzione

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[PHP] Settare una Variabile in una Funzione

Messaggioda M@ttia » gio dic 22, 2005 8:26 pm

Spiego il mio (credo banale) problema in PHP:

Ho una funzione del tipo
Codice: Seleziona tutto
function(){
  include(xxx.php)

  while(...){
    $Variabile[i] = i*2;
  }
}

(è un bel po' + complessa ma questo è un esempio del pezzetto che mi interessa...).

Con quel ciclo While io ottengo un po' di Variabili in una Array (nell'esempio sopra ottengo: $Variabile[1] = 2; $Variabile[2] = 4; ...)

Tuttavia appena quella funzione finisce, quelle variabili scompaiono, poiché sono uscito dal blocco {} e quindi non sono + "visibili"...

Come faccio a poter dichiarare queste Variabili-Array all'interno du ina funzione, ma poterle poi richiamare da un qualsiasi punto al suo esterno??? (se metto un return poi il ciclo while si interrompe, mentre a me serve che vengano dichiarate tutte le variabili...).

Thx [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda sonep » ven dic 23, 2005 5:20 am

se non sbaglio, inizializzando la variabile all'esterno (e prima) della funzione function dovresti renderla globale.....forse mi spiego meglio con un esempio:
Codice: Seleziona tutto
.....
$Variabile[0] = 1;
function(){
  include(xxx.php)

  while(...){
    $Variabile[i] = i*2;
  }
}...
People are strange when you're a stranger
Faces look ugly when you're alone
Women seem wicked when you're unwanted
Avatar utente
sonep
Silver Member
Silver Member
 
Messaggi: 1017
Iscritto il: dom mag 11, 2003 5:18 pm
Località: Basilicata

Messaggioda Leo » ven dic 23, 2005 8:27 am

In realtà in questo modo non risolvi il tuo problema, perché devi dichiarare all'interno della funzione l'uso di una variabile globale. perché funzioni devi fare così:



Codice: Seleziona tutto
$Variabile[0] = 1;
function(){
  global $Variabile;
  include(xxx.php)

  while(...){
    $Variabile[i] = i*2;
  }
}.


Secondo me comunque, se l'array ti serve solo all'interno della funzione, l'ideale è fare una cosa di questo tipo:

Codice: Seleziona tutto
function(){
  include(xxx.php)
 
  $Variabile = Array();

  while(...){
    $Variabile[i] = i*2;
  }
}.


E così ottieni una variabile locale alla funzione, senza doverla creare globale.
Leo
Responsabile Tecnico MegaLab.it
Avatar utente
Leo
Silver Member
Silver Member
 
Messaggi: 1683
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara


Messaggioda sonep » ven dic 23, 2005 1:40 pm

Leo ha scritto:In realtà in questo modo non risolvi il tuo problema, perché devi dichiarare all'interno della funzione l'uso di una variabile globale.

non voglio mettermi contro i mastri di MLI....per carità, ma non dovrebbè funzionare anche senza la dichiarazione esplicita della variabile globale?
quando all'interno di una funzione viene trovata una variabile già esistente....non diventa automaticamente una variabile globale??!
molto probabilmente sbaglio...!!!
People are strange when you're a stranger
Faces look ugly when you're alone
Women seem wicked when you're unwanted
Avatar utente
sonep
Silver Member
Silver Member
 
Messaggi: 1017
Iscritto il: dom mag 11, 2003 5:18 pm
Località: Basilicata

Messaggioda Leo » ven dic 23, 2005 2:02 pm

sonep ha scritto:
Leo ha scritto:In realtà in questo modo non risolvi il tuo problema, perché devi dichiarare all'interno della funzione l'uso di una variabile globale.

non voglio mettermi contro i mastri di MLI....per carità, ma non dovrebbè funzionare anche senza la dichiarazione esplicita della variabile globale?
quando all'interno di una funzione viene trovata una variabile già esistente....non diventa automaticamente una variabile globale??!
molto probabilmente sbaglio...!!!


Eh, no, in php è necessario specificare quali variabili globali vuoi usare nella funzione che stai implementando

Trovi la spiegazione qui:
http://it.php.net/variables.scope

Se ci pensi, è anche una cosa intelligente, perché evita che in una funzione si vada involontariamente a sovrascrivere varabili precedentemente definite.
Leo
Responsabile Tecnico MegaLab.it
Avatar utente
Leo
Silver Member
Silver Member
 
Messaggi: 1683
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda sonep » ven dic 23, 2005 3:25 pm

Leo ha scritto:Eh, no, in php è necessario specificare quali variabili globali vuoi usare nella funzione che stai implementando

Trovi la spiegazione qui:
http://it.php.net/variables.scope

Se ci pensi, è anche una cosa intelligente, perché evita che in una funzione si vada involontariamente a sovrascrivere varabili precedentemente definite.
beh....in effetti in questo modo è più difficile far nascere degli errori di questo genere!
però, non so perché, ricordavo una strana regoletta: "Ogni variabile locale di una funzione diventa globale per tutti i suoi sottoprogrammi"
sicuramente la mia mente ha inciampato!

ciao
People are strange when you're a stranger
Faces look ugly when you're alone
Women seem wicked when you're unwanted
Avatar utente
sonep
Silver Member
Silver Member
 
Messaggi: 1017
Iscritto il: dom mag 11, 2003 5:18 pm
Località: Basilicata


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising