Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP - proměnná v proměnné

Potřeboval bych v kódu

$new_category02_1 = stripinput($_POST['category02_1']);

nahradit řetězec "category02" proměnnou $category. Jsem laik a samouk, většinou to zkouším metodou pokus omyl a tady už mi došla invanece. :-) Jaká je správná synztaxe, plz...

Díky.

Předmět Autor Datum
$category = "category02"; $_POST[$category."_1"]; ?
Flash_Gordon 27.01.2009 11:07
Flash_Gordon
Nerozumíme si... Potřeboval bych, aby to místo takhle: $new_category02_1 = stripinput($_POST['categ…
Drbo 27.01.2009 19:18
Drbo
Nefunguje? $new_$category_1 = stripinput($_POST[$category_1]);
Flash_Gordon 27.01.2009 19:20
Flash_Gordon
No právě že takhle to nefunguje...
Drbo 27.01.2009 19:47
Drbo
Co takto? $category = $category."_1"; $new_$category_1 = stripinput($_POST['$category']);
host 27.01.2009 19:52
host
Neměly by tam být ty uvozovky(aspoň já jsem se to tak naučil), už vůbec ne apostrofy, pak to IMHO(vy…
marekdrtic 27.01.2009 19:55
marekdrtic
dobre pre samoukov je napr. default.asp Inac napr. aj google vie byt uzitocne, zadas si do neho slov…
MM.. 27.01.2009 13:04
MM..
Pokud potřebuješ "slepit" název proměnné, udělej to takhle: //pokud potrebujes zamenovat category v…
marekdrtic 27.01.2009 19:54
marekdrtic
Tak ještě jinak - budu úplně nejkonkrétnější... Jde o tohle: $new_category01_1 = stripinput($_POST[…
Drbo 27.01.2009 20:40
Drbo
Mas tam podla mna 2 chyby. Na co si myslel ked si to vyrabal? Prva chyba podla mna je to ze interpre…
MM.. 27.01.2009 22:12
MM..
Jj, zdá se, že takhle to funguje...
Drbo 27.01.2009 22:32
Drbo
ok :) nabuduce skus pouzivat polia, je to jednoduchsie. pole.php poslední
MM.. 27.01.2009 23:00
MM..
A preco nepouzijes pole (array)? Inac okrem toho co uz pisali vyssie mozes si vytvorit aj inu varia…
MM.. 27.01.2009 20:09
MM..

Nerozumíme si... Potřeboval bych, aby to místo takhle:

$new_category02_1 = stripinput($_POST['category02_1']);

vypadalo nějak takhle:

$new_$category_1 = stripinput($_POST['$category_1']);

Takhle to ovšem nefunguje, předpokládám, že tam chybí nějaké závorky, uvozovky... jde mi o syntaxi...

Neměly by tam být ty uvozovky(aspoň já jsem se to tak naučil), už vůbec ne apostrofy, pak to IMHO(vyzkouším) bere všechno jako řetězec, kdybys tam měl obyč "" uvozovky, šlo by to ;-)

PS:

$POST = 'test';
echo $_GET['$POST']; //SPATNE!!!!!
echo $_GET["$POST"]; //DOBRE, ale moc se mi to nelibi :-)
echo $_GET[$POST]; //DOBRE

PS k tomuto: $new_$category_1
V PHP se proměnné skládají jako dolar a složené závorky, v tom si už můžeš dělat co chceš, takže:
${cokoliv} = .....;

Pokud potřebuješ "slepit" název proměnné, udělej to takhle:

//pokud potrebujes zamenovat category v $new_category02_1:
${"new_".$category."_1"} = stripinput($_POST['category02_1']);
//pokud potrebujes zamenovat category v "POSTu":
$POST = $category."02_1";
$new_category02_1 = stripinput($_POST[$POST]);

Možná že jsem to blbě pochopil, možná to jde udělat i jinak ;-)

Tak ještě jinak - budu úplně nejkonkrétnější... Jde o tohle:

$new_category01_1 = stripinput($_POST['category01_1']);
$new_category01_2 = stripinput($_POST['category01_2']);
$new_category01_3 = stripinput($_POST['category01_3']);
$new_category01_4 = stripinput($_POST['category01_4']);
$new_category01_5 = stripinput($_POST['category01_5']);
$new_category01_w = $_POST['category01_w'];

Tohle potřebuji pro 30 kategorií. Abych nemusel mít 30x6 řádků, chtěl jsem to obejít takhle:

for ($j=1;$j<31;$j++) {
if ($j<10) {$category = "category0".$j;}
else {$category = "category".$j;}
for ($i=1;$i<6;$i++) {
    $new_$category_1 = stripinput($_POST[''.$category.'_1']);
}
    $new_$category_w = $_POST[''.$category.'_w'];
}

Jenže takhle to nefunguje... Protože jsem skutečně naprostý laik a jen se pokouším něco za pochodu pochytit, pravděpodobně existují i jiné, jednodušší způsoby...

Mas tam podla mna 2 chyby. Na co si myslel ked si to vyrabal?
Prva chyba podla mna je to ze interpreter nemoze vediet co vlastne v $new_$category_1 je premenna a co je zbytok nazvu. Riesi sa to tusim zlozenymi zatvorkami (nie som si isty), naisto by malo ist to co som uz pisal (pouzit novu docasnu premennu).
Druha vec je ze v cykle for($i=1;$i<6;$i++) chces predsa pouzivat $i a nie cislo 1.
Skus to teda takto:

for ($j=1;$j<=30;$j++)
{
 if ($j<10) {
  $category = "category0".$j;
 } else {
  $category = "category".$j;
 }

 for ($i=1;$i<=5;$i++) {
  $tempcategory = "new_".$category.'_'.$i;
  $$tempcategory = stripinput($_POST[$category.'_'.$i]);
 }
 $tempcategory = "new_".$category.'_w';
 $$tempcategory = $_POST[$category.'_w'];
}

Zpět do poradny Odpovědět na původní otázku Nahoru