Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    eseguire comandi contenuti in una stringa

    Ciao a tutti,
    sono nuovo alla programmazione php e mi sto scontrando con problemi abbastanza semplici.
    Vorrei eseguire delle operazioni sui dati in modo dinamico.
    Ad esempio se estraggo una data dal database, vorrei poter eseguire su questa delle operazioni tipo la somma, la sottrazione, la formattazione che pesco da un'altra tabella.

    Nel concreto vi sottopongo un esempio: come posso eseguire il comando contenuto in una stringa e visualizzare la data formattata?


    codice:
    foreach ($array as $value){
    	$mioComando = "date('d/m/Y',$value)";
            ???
    }
    grazie

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    la funzione che ti serve è eval, ma secondo me è sbagliato l'approccio, o comunque da valutare in modo accurato.

    Far eseguire del codice in questo modo è sempre un rischio.

    ciao

  3. #3
    Grazie gianiaz per la risposta!
    "If eval() is the answer, you're almost certainly asking the wrong question." -- Rasmus Lerdorf, BDFL of PHP

    Riguardo il fatto che si possa realizzare meglio questa soluzione, è sicuramente vero, però visto lo scopo didattico del mio codice, volevo capire come rendere totalmente parametrizabile ciò che una colonna visualizza. E' possibile che in futuro limiterò a due o tre operazioni, così da evitare inutili complicazioni e realizzare un metodo per ognuna.

    Giusto per capire il funzionamento di eval, visto che siamo in ballo...

    Guardando il manuale PHP per questa funzione
    mi sembra di aver intuito che è una funzione che "modifica" il modo in cui la stringa verrà "letta da php" e non restituisce la stringa.

    Perciò il codice diventerebbe qualcosa tipo:
    codice:
    foreach ($array as $value){
    	$mioComando = "date('d/m/Y',$value)";
            eval("\$mioComando = \"$mioComando\";");
            echo $mioComando; 
    }
    Purtroppo non ottengo ciò che aspetto, la funzione stampa
    codice:
    date('d/m/Y', 1193349600)
    Ho provato ad accodare il punto e virgola ma non cambia il risultato.

    C'è qualcuno che può aiutarmi?

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.