Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    10

    Funzioni personalizzate: non riesco a creare variabili da usare in altre funzioni

    Ciao a tutti, sono un novello autodidatta di PHP e vi illustro il mio problema:
    ho 2 funzioni personalizzate che riporto qui in versione ridotta:
    Codice PHP:
        function features($name) {
          switch (
    $name) {
            case 
    'LEATHER_SEATS' $record["CAR/FEATURES/LEATHERSEATS"] = 'true'; break;
            case 
    'ALLOY_WHEELS' $record["CAR/FEATURES/ALLOYWHEELS"] = 'true'; break;
    [...]        
            }
          } 
    Codice PHP:
        function rec_insert($record) {
        
    features($record["V:VEHICLE/V:FEATURES/V:FEATURE-KEY"]);
          
    features($record["V:VEHICLE/V:FEATURES/V:FEATURE@1-KEY"]);
        
    features($record["V:VEHICLE/V:FEATURES/V:FEATURE@2-KEY"]);
        
    features($record["V:VEHICLE/V:FEATURES/V:FEATURE@3-KEY"]);

      
    $sql "INSERT INTO auto_temp SET
          1 = '"
    .mysql_real_escape_string$record["CAR/FEATURES/LEATHERSEATS"] )."',
          2 = '"
    .mysql_real_escape_string$record["CAR/FEATURES/ALLOYWHEELS"] )."',
    [...] 
    Quando richiamo la funzione features() mi dovrebbe restituire una variabile con valore 'true' se l'argomento che le passo corrisponde, ma ciò non funziona, la nuova variabile non risulta con valore 'true' all'interno della seconda funzione...
    Qualcuno ne sa qualcosa a riguardo?
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dopo che richiami la funzione features() dovresti leggere il parametro, oppure - se intendo cosa vuoi fare - puoi far così:

    Codice PHP:
    function features($name, &$record) {
    ... 
    e quando chiami la funzione (dentro l'altra) fai:

    Codice PHP:
     features($record["V:VEHICLE/V:FEATURES/V:FEATURE-KEY"], $record); 
    ... 
    oppure ancora rendi $record una variabile globale

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    10
    Non so chi sei veramente. ma se ti becco per strada ti offro qualcosa
    Funziona perfettamente, e dire che pensavo che l'& prima dell'argomento fosse un errore di battitura...
    Ho letto un po' di cose su php.net a riguardo, ma non riesco a capirtmi bene, se non ti dispiace mi spieghi in 2 righe come funziona l'&?
    Grazie ancora!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Dunque: la & prima della variabile indica che la stessa deve essere passata "per riferimento" e non "per valore"... il metodo più intuitivo è quest'ultimo (quello "classico" per intenderci) che in pratica copia il valore della variabile in un'altra (che può averre un altro nome) da usare dentro la funzione (l'uso "normale" insomma). "Per rifeirmento" invece vuol dire che la variabile usata nella funzione (che potrebbe anche avere un nome diverso) deve "puntare" a quella originale, quindi qualunque modifica fai si ripercuote su quella, perchè in effetti è l'unica esistente.

    Per esempio:

    $b = 7;
    $a = $b; // questo copia il valore di $b (cioè 7) dentro $a, quindi hai due "7" nella memoria
    $c = &$b; // questo invece fa "puntare" $c allo stesso spazio di $b
    $c = 0; // questo pone a 0 la variabile $c, la cui area di memoria però è la stessa di $b;
    print $b; // questo stampa "0" perchè modificato al passo di prima


    Ci si vede in giro, allora!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.