如何获取动态无线电数组值

时间:2018-06-01 16:51:57

标签: php arrays

我只是想不出这个。 在PHP中,我创建了动态单选按钮,这些按钮基于从关联数组收集的表单数据进行填充。例如,关联的数组和值为:

数据列表代码:

foreach($_SESSION['items'] as $key=>$value)
{
echo 'The value of $_SESSION['."'".$key."'".'] is '."'".$value."'".' <br />'; 
}

数组回显结果:

$ _SESSION ['0']的值是'Ralph'

$ _SESSION ['1']的值是'Cindy'

$ _SESSION ['2']的值是'凯蒂'

接下来我拿数组值创建一个单选按钮数组,要求进行用户比较,如下所示(使用双循环效果很好):

<form name="ranking_submit" action="" method="post">
<?php
echo "<br>";
// compare each array item with each other - one time
$radiocounta = 40;
$radiocountb = 0;
$radiocountc = 80;

$sizeZ=count($_SESSION['items']);
echo "<table>";
for ($i = 0; $i < $sizeZ-1; $i++) 
{
for ($j = $i+1; $j < $sizeZ; $j++) 
{
$radiocounta += 1;
$radiocountc += 1;
$radiocountb += 1;
echo "<tr><td class='rright ratecell'><div class='big ccenter'>"."<input id='".$radiocounta . "' type='radio' required='required' name='". $radiocountb ."' value= '".$_SESSION['items'][$i]."' />"."<label for='".$radiocounta. "' title='".$_SESSION['items'][$i]."'>".$_SESSION['items'][$i]."</label></div></td><td class='ccenter'>"." vs "."</td><td class='ratecell'><div class='big ccenter'>"."<input id='".$radiocountc . "' type='radio' name='". $radiocountb ."' value= '".$_SESSION['items'][$j]."' />"."<label for='".$radiocountc. "' title='".$_SESSION['items'][$j]."'>".$_SESSION['items'][$j]."</label></div></td>
</tr>";
}
}
echo "</table>";
?>
<input name="ranking_submit" type="submit" value="Rank Them"  />
</form>

这将生成以下允许选择的表单代码(html):

<form name="ranking_submit" action="" method="post">

<br><table><tbody><tr><td class="rright ratecell"><div class="big ccenter"><input id="41" type="radio" required="required" name="1" value="Ralph"><label for="41" title="Ralph">Ralph</label></div></td>
<td class="ccenter"> vs </td>
<td class="ratecell"><div class="big ccenter"><input id="81" type="radio" name="1" value="Cindy"><label for="81" title="Cindy">Cindy</label></div></td>

</tr><tr><td class="rright ratecell"><div class="big ccenter"><input id="42" type="radio" required="required" name="2" value="Ralph"><label for="42" title="Ralph">Ralph</label></div></td>
<td class="ccenter"> vs </td>
<td class="ratecell"><div class="big ccenter"><input id="82" type="radio" name="2" value="Katie"><label for="82" title="Katie">Katie</label></div></td>

</tr><tr><td class="rright ratecell"><div class="big ccenter"><input id="43" type="radio" required="required" name="3" value="Cindy"><label for="43" title="Cindy">Cindy</label></div></td>
<td class="ccenter"> vs </td>
<td class="ratecell"><div class="big ccenter"><input id="83" type="radio" name="3" value="Katie"><label for="83" title="Katie">Katie</label></div></td>
</tr></tbody></table><input name="ranking_submit" type="submit" value="Rank Them">
</form>

我需要从无线电选择中获取值,最好是键和值。后来我想计算每个$ _SESSION ['items']的选择数量 - 换句话说,找出每个项目被选中的次数。

我已尝试使用此代码获取初始无线电选择输出,但它似乎不起作用:

<?php
if (isset($_POST["ranking_submit"]) && !empty($_POST["ranking_submit"]))  { 
foreach($_POST['radiocountb'] as $value){
    echo "My values here"."</b>";
    echo "<span>selected :<b> ".$value."</b></span>";
}
    }
?>

如果我只是回显最后一个$ radiocountb,那么我得到正确的最新计数:

echo $radiocountb ."<br>";

产生最新的计数:3个三个无线电选择。

请帮忙 - 我如何获得$ _SESSION ['项目'的列表,并通过无线电选择适当计算每次选择的次数?

非常感谢您的帮助和考虑。

1 个答案:

答案 0 :(得分:0)

对于每个人都很好,我正在使用WOUNDEDStevenJones的建议发布ANSWER问题:

我改变了:

name='". $radiocountb ."'

要:

name='radiocountb[". $radiocountb ."]'

如下:

<form name="ranking_submit" action="" method="post">
<?php
echo "<br>";
// compare each array item with each other - one time
$radiocounta = 40;
$radiocountb = 0;
$radiocountc = 80;

$sizeZ=count($_SESSION['items']);
echo "<table>";
for ($i = 0; $i < $sizeZ-1; $i++) 
{
    $radiocountb += 1;
    for ($j = $i+1; $j < $sizeZ; $j++) 
    {
    $radiocounta += 1;
    $radiocountc += 1;
    $radiocountb += 1;
echo "<tr><td class='rright ratecell'><div class='big ccenter'>"."<input id='".$radiocounta . "' type='radio' required='required' 
name='radiocountb[". $radiocountb ."]' value= '".$_SESSION['items'][$i]."' />"."<label for='".$radiocounta. "' title='".$_SESSION['items'][$i]."'>".$_SESSION['items'][$i]."</label></div></td>
<td class='ccenter'>"." vs "."</td>
<td class='ratecell'><div class='big ccenter'>"."<input id='".$radiocountc . "' type='radio' name='radiocountb[". $radiocountb ."]' value= '".$_SESSION['items'][$j]."' />"."<label for='".$radiocountc. "' title='".$_SESSION['items'][$j]."'>".$_SESSION['items'][$j]."</label></div></td>
</tr>";
    }
    }
    echo "</table>";
?>
<input name="ranking_submit" type="submit" value="Rank Them"  />
</form>

改变了无线电阵列的命名方法。

然后,为了获得无线电值,我使用了以下内容:

<?php
 $selections= array();
    if (isset($_POST['radiocountb'])) {
foreach($_POST['radiocountb'] as $key=>$value){
        echo "<span>selected :<b> ".$key." ".$value."</b></span>"."<br />";
        $selections[] = $value;
   }
        }
?>

这就是诀窍。 感谢WOUNDED StevenJones为您提供了有用的评论,以便找到解决方案。

相关问题