如何从三维表单输入名称数组中获取数据

时间:2013-10-02 16:33:04

标签: php html

我有一张表格,

选择名称包含fixtureId,无论是在家还是离开,teamId fixture[id][home/away][teamid]和所选值都是得分:

HTML

<form>
    <select name="fixture[1][home][5]">
        <option value="0">0</option>
        <option value="1">1</option>
    </select>
    <select name="fixture[1][away][10]">
        <option value="0">0</option>
        <option value="1">1</option>
    </select>
    <button type="submit"></button>
</form>

我希望访问与所选值组合的选择名称值,以便在两个foreach循环中输出:

echo $fixtureId."-".$venue."-".$teamId."-".$score;

PHP

foreach($_POST['fixture'] as $fixtureId => $fixtureArray){

    foreach($fixtureArray as $venue => $scoreArray){

        echo $fixtureId."-".$venue;

        $teamId =  key($scoreArray[0]); 
        $score = $scoreArray[0];    

    }   
}

$ scoreArray

Array
(
    [10] => 0
)

问题

目前$fixtureId$venue按预期工作,但即使他们在$scoreArray,我也无法得到分数和团队ID!

团队ID应为10,分数应为0;

3 个答案:

答案 0 :(得分:1)

我敢打赌你不够深入。在foreach()循环之前尝试此操作:

echo '<pre>'.print_r($_POST['fixture'], true).'</pre>';

答案 1 :(得分:1)

让我们假设你已经选择了第一个选项,我们正在处理第一个选择......

foreach($_POST['fixture'] as $fixtureId => $fixtureArray){
// Now $textureId = 1; $fixtureArray = array("home"=> array(5=> 0));

    foreach($fixtureArray as $venue => $scoreArray){
    // Now $venue = "home"; $scoreArray = array(5 => 0); therefore ...

        echo $fixtureId."-".$venue;

        // There is NO index 0, so there is no key for it
        $teamId =  key($scoreArray[0]); 
        // Again, There is NO index 0
        $score = $scoreArray[0];    

    }   
}

每当您不确定阵列的索引时,请使用print_r

要解决此问题:为什么不简单地使用其他foreach

foreach($_POST['fixture'] as $fixtureId => $fixtureArray){
    print_r($fixtureArray)

    foreach($fixtureArray as $venue => $scoreArray){
        print_r($scoreArray);
        echo $fixtureId."-".$venue;

        foreach($scoreArray as $teamId => $score)
        {
            echo($teamId."-".$score);
        }
    }   
}

答案 2 :(得分:0)

试试这个我测试了这段代码

echo '<pre>';print_r($_POST);echo '</pre>';
    foreach($_POST['fixture'] as $fixtureId => $fixtureArray) {
        foreach($fixtureArray as $venue => $scoreArray) {
            echo '<pre>';print_r($scoreArray);echo '</pre>';
            //echo $fixtureId."-".$venue;
            //echo $scoreArray;
            foreach ($scoreArray as $scoreValue) {
                echo "fixtureId ".$fixtureId."-"." venue ".$venue." score value ".$scoreValue."<br />";
            }
            /*$teamId =  key($scoreArray[0]);
            $score = $scoreArray[0];*/

        }
    }

这是你的代码我只是更新了一些东西。它奏效了。