二维数组 PHP 单词之间的变量
2D array PHP variables in between words
正如标题所说。我正在尝试将 $_POST['spell'.$j.'icon'.$i]
中的每个值存储在二维数组中,我很好奇是否有任何方法可以使该数组看起来相同 $spell[$j]icon[$i]
$spellicon=array();
for($i=1;$i<=$_POST['champ_number']; $i++){
for($j=1; $j<=$noofspellschamp[$i]; $j++){
$spellicon[$j][$i]=$_POST['spell'.$j.'icon'.$i];
}
}
EDIT 上一个站点的一些代码。数据是嵌套的,所以我需要它在二维数组中。
for($i=1;$i<=$champ_number; $i++){
echo $_POST['champno'.$i].'<br/>';
//echo '<input type="hidden" value="'.$_POST['champno'.$i].'" name="champno'.$i.'">';
$champno[$i] = $_POST['champno'.$i];
//echo '<input type="hidden" value="'.$_POST['noofspellschamp'.$i].'" name="noofspellschamp'.$i.'">';
$noofspellschamp[$i] = $_POST['noofspellschamp'.$i];
for($j=1; $j<=$_POST['noofspellschamp'.$i]; $j++){
echo '<select name="spell'.$j.'icon'.$i.'">';
echo '<option value="Passive">Passive</option>';
echo '<option value="Q" selected>Q</option>';
echo '<option value="W">W</option>';
echo '<option value="E">E</option>';
echo '<option value="R">R</option>';
echo '</select>';
if($i==1&&$j==1){
echo '<input type="text" name="spell'.$j.'title'.$i.'" placeholder="Spell '.$j.' name" required autofocus><br/>';
}
else{
echo '<input type="text" name="spell'.$j.'title'.$i.'" placeholder="Spell '.$j.' name" required><br/>';
}
编辑 2 Print_R($_POST)
Array (
[formid] => 6
[champ_number] => 2
[spell1icon1] => Q
[spell1title1] => spell1
[champno1spellno1] => 1
[description111] => sakdop
[change111] => buff
[spell1icon2] => Q
[spell1title2] => sdkop
[champno2spellno1] => 1
[description121] => sadas
[change121] => buff
[noofspellschamp] => {"1":"1","2":"1"}
[champno] => {"1":"Garen","2":"Katarina"}
[patch] => 0.03
)
PHP 中没有 $spell[$j]icon[$i]
这样的东西。您使用的方法 ($spellicon[$j][$i]
) 是标准 PHP 中唯一的方法(我的意思是,没有 类)。
但如果你这样做会更好:$spellicon[$i][$j]
,因为它是拥有法术的冠军,而不是相反。
下面的代码是简化的。检查包含的主题。 只需使用
$_POST['spellicon'][$j][$i]
或
$_POST['spell'][$j]['icon'][$i]
并且您将拥有与变量相同的命名约定。
考虑到表单构建,它会更清晰,您可以以良好的方式对数据进行分组。如果您不知道如何通过 POST 发送多维数组,请检查 this topic
正如标题所说。我正在尝试将 $_POST['spell'.$j.'icon'.$i]
中的每个值存储在二维数组中,我很好奇是否有任何方法可以使该数组看起来相同 $spell[$j]icon[$i]
$spellicon=array();
for($i=1;$i<=$_POST['champ_number']; $i++){
for($j=1; $j<=$noofspellschamp[$i]; $j++){
$spellicon[$j][$i]=$_POST['spell'.$j.'icon'.$i];
}
}
EDIT 上一个站点的一些代码。数据是嵌套的,所以我需要它在二维数组中。
for($i=1;$i<=$champ_number; $i++){
echo $_POST['champno'.$i].'<br/>';
//echo '<input type="hidden" value="'.$_POST['champno'.$i].'" name="champno'.$i.'">';
$champno[$i] = $_POST['champno'.$i];
//echo '<input type="hidden" value="'.$_POST['noofspellschamp'.$i].'" name="noofspellschamp'.$i.'">';
$noofspellschamp[$i] = $_POST['noofspellschamp'.$i];
for($j=1; $j<=$_POST['noofspellschamp'.$i]; $j++){
echo '<select name="spell'.$j.'icon'.$i.'">';
echo '<option value="Passive">Passive</option>';
echo '<option value="Q" selected>Q</option>';
echo '<option value="W">W</option>';
echo '<option value="E">E</option>';
echo '<option value="R">R</option>';
echo '</select>';
if($i==1&&$j==1){
echo '<input type="text" name="spell'.$j.'title'.$i.'" placeholder="Spell '.$j.' name" required autofocus><br/>';
}
else{
echo '<input type="text" name="spell'.$j.'title'.$i.'" placeholder="Spell '.$j.' name" required><br/>';
}
编辑 2 Print_R($_POST)
Array (
[formid] => 6
[champ_number] => 2
[spell1icon1] => Q
[spell1title1] => spell1
[champno1spellno1] => 1
[description111] => sakdop
[change111] => buff
[spell1icon2] => Q
[spell1title2] => sdkop
[champno2spellno1] => 1
[description121] => sadas
[change121] => buff
[noofspellschamp] => {"1":"1","2":"1"}
[champno] => {"1":"Garen","2":"Katarina"}
[patch] => 0.03
)
PHP 中没有 $spell[$j]icon[$i]
这样的东西。您使用的方法 ($spellicon[$j][$i]
) 是标准 PHP 中唯一的方法(我的意思是,没有 类)。
但如果你这样做会更好:$spellicon[$i][$j]
,因为它是拥有法术的冠军,而不是相反。
下面的代码是简化的。检查包含的主题。 只需使用
$_POST['spellicon'][$j][$i]
或
$_POST['spell'][$j]['icon'][$i]
并且您将拥有与变量相同的命名约定。
考虑到表单构建,它会更清晰,您可以以良好的方式对数据进行分组。如果您不知道如何通过 POST 发送多维数组,请检查 this topic