Visualizzazione risultati 1 fino 5 di 5

Discussione: Modificare una variabile direttamente nella memoria senza passarla ad una funzione!

  1. #1
    Guest

    Predefinito Modificare una variabile direttamente nella memoria senza passarla ad una funzione!

    Non so se il titolo è corretto, ma vorrei sapere se sia possibile fare ciò. Io ho una variabile definita in un file comune a tutte le pagine, ora definisco questa variabile "globale" in una funzione! E' possibile modificare questa variabile senza passarla alla funzione dove dovrei modificarla? Cerco di spiegarmi con un esempio:
    Codice PHP:
    $var = 'a';

    function
    funct($arg)
    {
    global
    $var;

    if (
    $arg == 0)
    {
    $var = 'b';
    return
    false;
    }

    return
    true;
    }

    if (
    funct(0) === false)
    {
    echo
    $var; // Dovrebbe stampare b
    }
    else
    {
    echo
    $var; // Dovrebbe stampare a
    }
    Ovviamente qeusto è come vorrei fare, ma per le mie conoscenze dovrei obbligatoriamente fare così:
    Codice PHP:
    $var = 'a';

    function
    funct($arg, &$var)
    {
    if (
    $arg == 0)
    {
    $var = 'b';
    return
    false;
    }

    return
    true;
    }

    if (
    funct(0) === false)
    {
    echo
    $var; // Stampa b
    }
    else
    {
    echo
    $var; // Stampa a
    }
    Consigli per evitare la seconda opzione? Grazie

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Hai provato ad eseguire il primo codice così come l'hai scritto? Mi sembra corretto (dovresti solo aggiustare l'if, così com'è scritto sarà sempre verificato)... e dovrebbe fare esattamente quello che chiedi.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Se utilizzo il primo metodo, la variabile $var mi restituisce sempre a

    In realtà, nello script che sto facendo, ho un array, ma non credo cambi la cosa, giusto?

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Se io eseguo il primo pezzo di codice che hai scritto sopra, ottengo 'b', quindi c'è qualche problema altrove.

    In ogni caso, quel codice è corretto. Ricorda però che global non definisce una variabile come globale. Tutte le variabili definite fuori da una funzione o classe sono globali, inteso come "visibili in tutto il codice che segue, in qualsiasi file/modulo, a top level".

    La parola chiave global serve in una funzione per "succhiare" una variabile dallo scope globale a quello locale alla funzione, ed è solo una scorciatoia per creare un reference ad un campo di $GLOBALS:
    Codice PHP:
    $x = 3;

    function
    f() {
    // global $x;
    $x =& $GLOBALS['x'];

    echo
    $x;
    }
    Ultima modifica di dreadnaut : 24-08-2010 alle ore 13.43.53

  5. #5
    Guest

    Predefinito

    Hai ragione Dread! Il codice funziona, ma per un errore di distrazione non funzionava ovviamente! Praticamente definivo la variabile dopo l'inclusione del file che andava a modificarla e per questo è come se non fosse mai stata modificata.
    Grazie mille per l'aiuto!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •