Avatar billede downloading Nybegynder
24. oktober 2010 - 23:43 Der er 11 kommentarer

Navngive variable efter iteration

Hej.

Hvis jeg nu fx. laver en iteration hvor $iteration først hedder a, så b, så c osv.
Hvordan gør jeg sådan så under første iteration (hvor $iteration = a) bliver variablen $a tildelt en værdi fx $a=10, og så i næste iteration bliver fx $b = 8.

Altså det er hvordan får jeg tildelt variablen $$iteration = et_tal

Mange tak.
Avatar billede erikjacobsen Ekspert
25. oktober 2010 - 00:07 #1
Generelt er $$-metoden ( http://php.net/manual/en/language.variables.variable.php ) noget værre rod, som man skal holde sig rigtig langt væk fra. Det er skabt til at give problemer.

Du skal i stedet for tænke på arrays.
Avatar billede downloading Nybegynder
25. oktober 2010 - 00:25 #2
Hvad vil det sige?

Det er fordi jeg har nogle data fra en MySQL database der bliver hevet ud med scriptet nedenfor, og jeg vil gerne kalde felterne for fx. $name=###, $adress=### osv, men det ved jeg ikke hvordan jeg gør inden i en for-lykke.

        foreach( $userfields as $field ) {
            if( $field->name == 'email') $field->name = 'user_email';
            if($field->type == 'captcha') continue;
            ?>
          <tr>
            <td width="35%" align="right"> <?php echo $VM_LANG->_($field->title) ? $VM_LANG->_($field->title) : $field->title ?>:</td>
            <td width="65%" align="left"><?php
                switch($field->name) {
                      case 'country':
                          require_once(CLASSPATH.'ps_country.php');
                          $country = new ps_country();
                          $dbc = $country->get_country_by_code($dbt->f($field->name));
                          if( $dbc !== false ) echo $dbc->f('country_name');
                          break;
                      default:
                        $fieldvalue = $dbt->f($field->name);
                          if ( is_null($fieldvalue) OR $fieldvalue == "" ) {
                            echo " ";
                          } else {
                            echo $field->name;
                            echo "--";
                    echo $fieldvalue;
                   
                  }
                          break;
                  }
                  ?>
            </td>
          </tr>
          <?php
            }
Avatar billede repox Seniormester
25. oktober 2010 - 10:50 #3
Jeg kan godt se hvor #1 vil hen med det han siger; det er alment kendt at funktioner som extract() og dynamisk variabelnavngivning er noget rigtig gris - også selvom det er nemt.

Men hvorfor vil du også omdøbe $field->name til $name?
Avatar billede erikjacobsen Ekspert
25. oktober 2010 - 11:45 #4
Jeg har egentlig samme spørgsmål. Du skriver "jeg vil gerne kalde felterne for fx. $name...." - hvorfor?
Avatar billede downloading Nybegynder
16. november 2010 - 18:06 #5
Det er fordi jeg gerne vil linke til en side som:

download.php?navn=Ander&adresse=EnAdresse&postnummer=2100 osv osv..

Men jeg har fået det til at virke ved at bruge $$ :)
Avatar billede repox Seniormester
16. november 2010 - 18:22 #6
Det var da godt du fik det til at virke - selvom det er meningsløst...
Avatar billede downloading Nybegynder
16. november 2010 - 18:39 #7
ja :) hvorfor er det meningsløst?
Avatar billede repox Seniormester
17. november 2010 - 18:56 #8
Man kan ikke forklare noget som ingen mening har...
Vi vil få mere ud af at du forklarer hvorfor du ikke kan opnå det samme resultat om du bruger $name eller $field->name?
Avatar billede downloading Nybegynder
17. november 2010 - 19:09 #9
Fordi jeg bruger scriptet som vist i #2, og $field->name er altså inde i en while, så kan ikke helt se hvordan jeg ellers skal hive værdierne ud fra hver iteration ellers?

Måske man kunne bruge noget med $i++ og så gemme $field->name i et array på plads nummer $i?
Avatar billede repox Seniormester
18. november 2010 - 09:44 #10
Jeg forstår ikke relevansen mellem det link du nævner i #5 samt dit kodeeksempel i #2. Og jeg du bruger en foreach løkke i det script du har leveret, men snakker om for() og while() løkker som vi ikke kan se nogle steder.

Det er slet ikke til at se hvad der gør at du har brug for at omdøbe variabelnavne eller hvad din kode i #2 har med det at gøre.
Avatar billede downloading Nybegynder
18. november 2010 - 13:52 #11
okay.. Prøver lige at forklare så :)

Dataen der bliver trukket ud af side med scriptet fra #2.

De informationer vil jeg meget gerne sende til en fil der hedder postdanmark.php ligenu ligger den på samme server som #2, men jeg vil gerne flytte det til en anden server. Så jeg tænkte at måde at sende data'en er ved at åbne siden postdanmark.php?name=$name&adresse=$adresse osv

Er der en anden smartere måde?

Mange tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester