• Bannato User Attivo

    Insieme di costanti che ne formano una

    Ho questo:

    [PHP]$secondo1 = "ciao";
    $r = "1";
    $derk = "$secondo$r";
    echo "$derk";[/PHP]

    dove però $derk mi viene visualizzato come "1" anzichè mostrare la variabile $secondo1 contenente "ciao".

    Com faccio quindi a fare un insieme di costanti che ne vanno a formare una? :mmm:


  • User Attivo

    $derk = "secondo$r";


  • Bannato User Attivo

    @Senamion said:

    $derk = "secondo$r";

    ok...

    grazie 🙂


  • Bannato User Attivo

    e si ma aspetta, cosi fa vedere solo come è composto secondo1... a me serve che visualizza "ciao" contenuto dentro $secondo1 :mmm:


  • Super User

    Ciao alessiofbt,
    per risparmiare tempo posto questa funzione che ho creato tempo fa e adattato ora.
    Se comunque non puoi adattarla al tuo script,fammi sapere che tentiamo insieme di trovare un'altra soluzione al tuo problema.
    Il codice della funzione è questo:

    [php]<?
    $secondo=array("ciao");
    function derk($r){
    global $secondo;
    $derk=$r-1;
    echo $secondo[$derk];
    }
    derk(1);
    ?>[/php]Se vuoi utilizzare anche altre stringhe oltre a "ciao" puoi aggiungerle all'array $secondo,poi nell'esecuzione della funzione derk() cambi "1" con il numero corrispondente alla posizione dell' elemento desiderato nell'array $secondo. 😉

    esempio:
    [php]
    $secondo=array("ciao","test");
    [/php][php]derk(2);[/php]Mostrerà "test" 😉
    Ciao!


  • Moderatore

    Mi son ritrovato giusto ieri con un problema simile....riporto in toto il messaggio ch eho usato in un altro forum per provare a risolvere sto problema...

    Ciao gente...
    ho un dubbio atavico..
    sto facendo un controllo su variabili costruite in dinamico e ho notato un comportamento strano.
    Esempio
    $var1='uno';
    $var2='due';
    $var3='tre';
    in un ciclo $num che va da 1 a 3
    una situazione echo $var.$num mi vede effettivamente $var1,$var2,$var3 e mi stampa il contenuto delle stesse.(uno,due,tre)

    Esempio 2:
    $var1='uno'
    $var2='due';
    $var3='tre';
    $var1_titolo='il titolo numero uno'
    $var2_titolo='il titolo numero due';
    $var3_titolo='il titolo numero tre';
    La stessa situazione ma echo $var.$num._titolo mi stampa il contenuto di $var1 con la scritta titolo, cioè (uno_titolo,due_titolo,tre_titolo) in luogo di (il titolo numero uno,il titolo numero due,il titolo numero tre)

    Qualcuno ha qualche idea?
    Considerando il fatto che ho fatto prove su prove per far riconoscere l'ultimo pezzo alla variabile..qualcuno ha qualche idea? sto sbagliando qualcosa? c'è un'altra strada?

    A titolo esemplificativo ( insomma) posto la parte di codice incriminata:

    for($j=0;$j<count($array_box);$j++){
    $str_scrivi.='
    <div id="var'.$array_box[$j+1].'" class="nomeclasse">';
    if(trim($var.$array_box[$j+1]._titolo)!=''){
    $str_scrivi.= '<h5>'.$var.$array_box[$j+1]._titolo.'</h5>';
    }
    $str_scrivi.= $var.$array_box[$j+1].'
    </div>';
    }

    So che c'è qualcuno che può aiutarmi

    Secondo te come posso riadattare la tua funzione? intanto faccio un po' di prove...se nel frattempo ti colleghi ci aggiorniamo..
    grazie tante
    Criss


  • User Attivo

    Usare della array come suggerito da Probid secondo me è più comodo. Comunque, tanto per approfondire:

    [php]$secondo1 = "ciao";
    $r = 1;
    $derk = ${'secondo'.$r};
    echo "$derk";[/php]

    Stampa "ciao" 🙂

    Nel caso di Criss:

    [php]$var1_titolo = 'il titolo numero uno';
    $num = 1;
    echo ${'var'.$num.'_titolo'};[/php]

    Stampa "il titolo numero uno".


  • Bannato User Attivo

    Grazie FRA_T

    Ho un dubbio su una cosa che ho letto sul sito html.it

    Citazione dal sito HTML.IT

    In questo modo impareremo da subito a programmare in maniera più corretta e, anche se impiegheremo qualche minuto in più per cominciare, risparmieremo tante ore (e tanto fegato) per il futuro .... Concludiamo questa lezione sulle variabili con un accenno alle variabili dinamiche, pratica tuttora sconsigliata ma che potrebbe capitarvi di incontrare in contesti relativi a script di vecchia fattura; in qualche situazione può presentarsi la necessità di utilizzare delle variabili senza sapere a priori il loro nome. In questi casi, il nome di queste variabili sarà contenuto in ulteriori variabili. Facciamo un esempio: col codice seguente stamperemo a video il contenuto delle variabili 'pippo', 'pluto' e 'paperino':

    [PHP]<?php
    $pippo = 'gawrsh!';
    $pluto = 'bau!';
    $paperino = 'quack!';
    $$nome = 'pippo';
    echo $nome.'<br>';
    $$nome = 'pluto';
    echo $nome.'<br>';
    $$nome = 'paperino';
    echo $nome.'<br>';
    ?>[/PHP]

    Il risultato sul browser sarà 'gawrsh!', 'bau!' e 'quack!', ciascuno sulla propria riga (infatti ogni istruzione print crea il tag HTML <br> che indica al browser di andare a capo; vedremo più avanti che il punto serve a concatenare i valori che vengono stampati). Il doppio segno del dollaro ci permette infatti di usare la variabile 'nome' come contenitore del nome della variabile di cui vogliamo stampare il valore. In pratica, è come se avessimo detto a PHP: "stampa il valore della variabile che si chiama come il valore della variabile 'nome'". Questo era un esempio banale, e l'uso delle variabili dinamiche era in realtà perfettamente inutile, in quanto sapevamo benissimo come si chiamavano le variabili che ci interessavano. Però in situazioni reali può capitare di trovarsi in un ambito nel quale non sappiamo come si chiamano le variabili, e dobbiamo usare altre variabili per ricavarne il nome, oltrechè il valore.

    A me tutto questo non funziona :mmm: , errore loro?


  • User Attivo

    secondo me è una loro svista, a me il loro codice non funziona, ma funziona invece questo:

    [php]$pippo = 'gawrsh!';
    $pluto = 'bau!';
    $paperino = 'quack!';

    $nome = 'pippo';
    echo $$nome.'<br>';

    $nome = 'pluto';
    echo $$nome.'<br>';

    $nome = 'paperino';
    echo $$nome.'<br>';[/php]


  • Moderatore

    Grazie Fra_T, con due parentesi graffe mi hai risolto il problema che stava diventando abbastanza annoso. Non sapevo che queste mi "chiudessero" il nome della variabile.
    Grazie ancora
    Criss