Попытка запросить массив как переменные

У меня есть форма, где я использую несколько переменных, вроде массива, и на одном из моих серверов (Godaddy) мне не нужно запрашивать переменные, и он работает нормально. Я должен поменять серверы в ближайшее время, и мне нужно обойти, чтобы я мог запросить эти переменные

У меня есть 12 областей ввода, как

<input name="sd[1]" type="text" id="sd1" size='10' value='<?echo$sd[1];?>'/>
<input name="sd[2]" type="text" id="sd2" size='10' value='<?echo$sd[2];?>'/>
...
<input name="sd[12]" type="text" id="sd12" size='10' value='<?echo$sd[12];?>'/>

Мне нужно иметь возможность запрашивать каждую переменную sd [#], но все, что я пробовал, не работает.

Я пробовал такие вещи, как

for ($i=1; $i<=12; $i++){
$sd[$i]= $_POST['sd']["$i"];
}

а также

for ($i=1; $i<=12; $i++){
$sd[$i]= $_POST['sd[$i]'];
}

а также

$sd[1]= $_POST['sd[1]'];

Буду признателен за любую помощь, которую вы можете предложить.
Спасибо,
Келли

0

Решение

Название группировки name="sd[]" уже возвращает массив, являющийся числом внутри [] в качестве индекса. Относитесь к массиву как обычно.

foreach очень подходит для этой задачи:

$sd = $_POST['sd'];
foreach($sd as $key => $value) {
// $key is integer inside name[1] or name[2], and so on
echo $key;
echo $value;
}

На самом деле цикл с другим присваиванием является излишним, так как этот массив уже представляет то, что вы хотите.

$sd = $_POST['sd']; // contains the key pair values 1 => the corresponding echoed value from the form, and so on...
echo $sd[12];
2

Другие решения

Удалите двойные кавычки вокруг «$ i».

for ($i=1; $i<=12; $i++){
$sd[$i]= $_POST['sd'][$i];
}
0

Во-первых, вы не должны использовать короткие теги для вашего PHP.

<? is bad, <?php is good.

Параметр краткого тега по умолчанию отключен на большинстве хостов.

Во-вторых, вы должны иметь доступ к таким значениям.

$sd[1]= $_POST['sd'][1];

или даже так, если вам нужно зациклить

foreach($_POST['sd'] as $key => $value){
// $key is the number: 1-12
// $value is what is held in it. ex sd[1]
}
0

Используйте этот пример:

<?php

if(isset($_POST['sd'])) {
for($i = 1; $i <= count($_POST['sd']); $i++) {
echo $_POST['sd'][$i] . "<br>";
}
}?>

<form action='' method='POST'>
<input name="sd[1]" type="text" id="sd1" size='10' value='1'/>
<input name="sd[2]" type="text" id="sd1" size='10' value='2'/>
<input name="sd[3]" type="text" id="sd1" size='10' value='3'/>
<input type=submit value='Send'>
</form>

Или вы можете использовать этот код, в своем HTML-коде вы можете установить имя ввода, как это name="sd[]" в этом случае первый элемент 0 увидеть код:

<?php

if(isset($_POST['sd'])) {
for($i = 0; $i < count($_POST['sd']); $i++) {
echo $_POST['sd'][$i] . "<br>";
}
}?>

<form action='' method='POST'>
<input name="sd[]" type="text" id="sd1" size='10' value='1'/>
<input name="sd[]" type="text" id="sd1" size='10' value='2'/>
<input name="sd[]" type="text" id="sd1" size='10' value='3'/>
<input type=submit value='Send'>
</form>

Выход:

1
2
3
0
По вопросам рекламы [email protected]