2013-12-18 3 views
1

Ищу сделать что-то вроде следующего:

for ($i=0; $i<=$number_of_bundles; $i++) { 

    $rug_size . $i = $_POST['Size' . $i]; 

} 

К сожалению, это не работает, так как я получаю «неопределенный индекс», и когда я пытаюсь echoeing, например, $ rug_size1 не определено.

Как это можно сделать?

+2

Всякий раз, когда вы думаете, что хотите этого, то, что вы на самом деле хотите, это массив! – deceze

+0

Спасибо, я узнал мой урок! –

ответ

3

Предполагая инициализации $rug_size как array():

$rug_size[$i] = $_POST['Size' . $i]; 

Если вы действительно хотите использовать разные имена переменных (надеюсь, нет):

$vn = 'rug_size' . $i; 
$$vn = $_POST['Size' . $i]; 
+0

Вау, это очень простой и умный ответ. Спасибо! –

-1

, если я не ошибаюсь, чем

$_POST['Size' , $i] 

будет (т.е. точка вместо запятой)

$_POST['Size'. $i] 

другой способ избежать ошибки: использование Исеть()

for ($i=0; $i<=$number_of_bundles; $i++) { 
if(isset($_POST['Size' . $i])) 
{ 
    $rug_size . $i = $_POST['Size' . $i]; 
} 
} 
+0

Извините, по какой-то причине я использовал запятую для моего вопроса. Во время моего теста я использовал точку, и она, похоже, не работает. –

+0

@RaphaelRafatpanah Вы уверены, что у вас есть имя типа ввода как size1, size2 и так далее? –

+0

Да, я уверен. Размер с капиталом S. –

2

Вам нужно обернуть динамическую переменную в {} (и строку concat с Dot), как:

<?php 
$i = 1; 
${"rug_size".$i} = "Hello world!"; 
echo $rug_size1; 
?> 

Выход:

Hello world! 
+0

почему фигурные скобки? –

+0

Это не работает, поскольку он находится внутри цикла for. Неожиданный {. –

+0

Использование $ {} - способ создания динамических переменных –

0

сделать так.

for ($i=0; $i<=$number_of_bundles; $i++) { 

    ${'rug_size' . $i} = $_POST['Size' . $i]; 
} 
Смежные вопросы