webForumDet fria alternativet

Syntax problem (borde va lätt att lösa)

12 svar · 307 visningar · startad av Prime_66

Prime_66Medlem sedan aug. 2004290 inlägg
#1

Jag vill deklarera variablder i en for loop. Istället för att skriva:
$checkbox1 = $_SESSION["checkbox1"]
$checkbox2 = $_SESSION["checkbox2"]
osv...
Så vill jag skapa variablerna med hjälp av en foor loop. Det borde ju gå på något sätt?
Vad är felet i min kod nedan?
<?php
for($g=1; $g>=$i-1; $g++){
/*In the row that follows I want to create variables:
$checkbox1,$checkbox2,$checkbox3..and so on. What wrong?*/
$checkbox.$g = $_SESSION["checkbox".$g];
}
?>

Gislaved.netMedlem sedan juni 20001 521 inlägg
#2

Jag tror att du ska ta en titt på http://se.php.net/manual/en/language.variables.variable.php

$checkbox{$g} = $_SESSION["checkbox$g"];
Prime_66Medlem sedan aug. 2004290 inlägg
#3

har kollat på det. men blir inte klokare. det som du skrev är inte heller korrekt. :(

monAmourMedlem sedan dec. 2002258 inlägg
#4
eval("$checkbox" . $g . "= $_SESSION['checkbox" .  $g . "']");
Gislaved.netMedlem sedan juni 20001 521 inlägg
#5

Rasmus Lerdorf, BDFL of PHP skrev:

If eval() is the answer, you're almost certainly asking the
wrong question.

;)

MatteMedlem sedan aug. 20002 975 inlägg
#6

Annars är det här en variant:

foreach ($_SESSION as $key => $val) {

   if (substr($key, 0, 8) == 'checkbox') {
      $$key = $val;
   }
  
}

Det skulle i och för sig också gå med:

extract($_SESSION);

men av någon anledning känns det inte särskilt bra att köra extract på sessionsarrayen.

Prime_66Medlem sedan aug. 2004290 inlägg
#7

Matte: Så om använder det sätt som du föreslå kan jag alltså skriva: echo $key3; eller echo $key5; och få ett värde på det? Jag menar. Har de variablerna skapats då? För ju det som var tanken.

monAmourMedlem sedan dec. 2002258 inlägg
#8

Gislaved.net skrev:

Rasmus Lerdorf, BDFL of PHP skrev:

If eval() is the answer, you're almost certainly asking the
wrong question.

;)

Håller faktiskt med dig :D

MatteMedlem sedan aug. 20002 975 inlägg
#9

Nej, du använder echo $checkbox1; .

Exempel:

$_SESSION['checkbox1'] = 'hej';
$_SESSION['checkbox2'] = 'hopp';

foreach ($_SESSION as $key => $val) {

   if (substr($key, 0, 8) == 'checkbox') {
      $$key = $val;
   }

}

echo "$checkbox1 $checkbox2";
Prime_66Medlem sedan aug. 2004290 inlägg
#10

Tack matte. du löste mitt problem. har ett annat som du säkert också kan hjälpa till med. också ett syntax problem som stör mig nått oerhört att jag inte kommer på hur jag ska skriva.

om jag skriver:
echo $variable1:
Skrivs ju den ut.

Om jag vill göra samma sak fast 1:an istället är en variabel med värdet 1. Hur gör jag då?

echo $variable+$i;?
Fast det är ju fel, då parsern tror att den ska lägga ihop variablen som heter $variable med variabeln $i. Jag vill att den ska fatta att det är variablen $variable1 som den ska ta. Inget annat!

MatteMedlem sedan aug. 20002 975 inlägg
#11

T.ex

for ($i=1; $i<=2; $i++) {
   echo ${'checkbox'.$i};
}

Kolla in länken Gislaved.net gav tidigare.

Prime_66Medlem sedan aug. 2004290 inlägg
#12

Ahh..nice. Nu funkar allt som det ska. Du är en klippa! :birp

QonosMedlem sedan sep. 2000438 inlägg
#13

markera denna tråden som löst? :)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)