как создать переменные переменные внутри цикла for?
это цикл:
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { }
внутри этого цикла я хотел бы создать переменную $ seat за каждый раз, когда она проходит, но она должна увеличиваться так. в первый раз он должен быть $seat1 = $_POST['seat'+$aantalZitjesBestellen]
, в следующий раз он проходит: $seat2 = $_POST['seat'+$aantalZitjesBestellen]
и так далее.
поэтому в конце это должно быть:
$seat1 = $_POST['seat1']; $seat2 = $_POST['seat2'];
и так далее.
поэтому переменная и содержимое $ _POST должны быть динамическими.
Во-первых, я бы использовал массив для этого, если я не упустил что-то. Наличие переменных, таких как $seat1
, $seat2
и т. $seat1
, $seat2
гораздо меньшую полезность и гораздо более громоздко, чем использование массива.
При этом используйте этот синтаксис:
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { $key = 'seat' . $counter; $$key = $_POST[$key]; }
Наконец, PHP имеет встроенную функцию для извлечения ключей массива в таблицу символов: extract()
. extract()
имеет огромные потенциальные проблемы безопасности, если вы используете его с нефильтрованным вводом пользователя (например, $_POST
), поэтому используйте с осторожностью.
Это также будет работать:
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { ${'seat' . $counter} = $_POST['seat' . $counter]; }
(Расширены для ясности – вы можете сделать однострочный)
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { $varname = 'seat' . $counter; $$varname = $POST[$varname]; }
НО ! Вы действительно не должны этого делать. (И если вы действительно должны, см. Ответ cletus для встроенного PHP-способа сделать это, это тоже считается плохой практикой).
Пересмотрите свою проблему и посмотрите, могут ли массивы быть решением (я думаю, это будет). Это упростит проверку (через, например, var_dump()
) итерацию и не загрязнит глобальное пространство переменных.
for ( $counter = 1; $counter <= $aantalZitjesBestellen; $counter ++) { $name = 'seat' . $counter; $$name = $_POST['seat' . $counter]; }
Рекомендуется использовать массивы, так как вы можете проверить их проще.
Вы можете использовать экстракт, но я не рекомендую делать то, что вы пытаетесь сделать.