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.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
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..

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