php循环遍历多个数组

时间:2013-08-22 15:54:22

标签: php arrays

我的表格有7种不同的标准。每个标准都有3或4个问题,用户将检查相应的值。

我想循环遍历每个问题并创建一个包含标准id - >的字符串。问题ID - >并回答价值。

我似乎无法让它发挥作用。

这是数组的转储:

条件数组:

array(7) { [0]=> string(1) "1" [1]=> string(1) "3" [2]=> string(1) "5" [3]=> string(1) "7" [4]=> string(2) "10" [5]=> string(2) "11" [6]=> string(2) "12" } 

与每个问题相关的条件ID

array(19) { [0]=> string(1) "1" [1]=> string(1) "1" [2]=> string(1) "1" [3]=> string(1) "3" [4]=> string(1) "3" [5]=> string(1) "3" [6]=> string(1) "5" [7]=> string(1) "5" [8]=> string(1) "5" [9]=> string(1) "7" [10]=> string(1) "7" [11]=> string(1) "7" [12]=> string(1) "7" [13]=> string(2) "10" [14]=> string(2) "10" [15]=> string(2) "10" [16]=> string(2) "11" [17]=> string(2) "11" [18]=> string(2) "11" } 

问答数组(仅回答6个问题)

array(6) { [11]=> array(1) { [0]=> string(1) "5" } [12]=> array(1) { [0]=> string(1) "5" } [13]=> array(1) { [0]=> string(1) "5" } [14]=> array(1) { [0]=> string(1) "4" } [15]=> array(1) { [0]=> string(1) "4" } [16]=> array(1) { [0]=> string(1) "4" } }

这是我的循环代码似乎不起作用:

                  $criteriaNums = $_POST['criteriaNum'];
              $fk_criterias = $_POST['fk_criteria'];
              $questionValue = $_POST['questionValue'];

              foreach($questionValue as $question => $answer){
                //echo $question;
                    foreach($fk_criterias as $fk){
                        foreach($criteriaNums as $crit){
                            if($fk == $crit){
                                $string1 = $fk;
                                //echo $string1;
                            }
                        }
                    }
                    $string2 = $question;
                    foreach ( $answer as $result ){
                      $string3 = $result;
                      //echo $string3;
                  }
                $criteria .= $string1 . '|' . $string2 . '|' . $string3 . '|';
                //echo $criteria;
              }

任何帮助将不胜感激!!

字符串2和3似乎工作正常。它是string1不起作用。

这是上面代码生成的输出:

11 | 11 | 5 | 11 | 11 | 5 | 11 | 12 | 5 | 11 | 11 | 5 | 11 | 12 | 5 | 11 | 13 | 5 | 11 | 11 | 5 | 11 | 12 | 5 | 11 | 13 | 5 | 11 | 14 | 4 | 11 | 11 | 5 | 11 | 12 | 5 | 11 | 13 | 5 | 11 | 14 | 4 | 11 | 15 | 4 | 11 | 11 | 5 | 11 | 12 | 5 | 11 | 13 | 5 | 11 | 14 | 4 | 11 | 15 | 4 | 11 | 16 | 4 |

这是应该如何运作的:

总共有19个问题。在上面的问题/答案数组转储中,用户只回答了6。

第一个问题是id#11,答案是值5。 第二个问题是id#12,答案是值5 第三是id#13答案是5 第四是id#14答案是4 5号是id#15答案是4 第六是id#16回答是4

上面的条件id数组转储是与每个问题一起的关联条件。如果你看转储你可以看到前6(0 - 5)有1,1,1,3,3,3

所以预期的输出应该是

1 | 11 | 5 | 1 | 12 | 5 | 1 | 13 | 5 | 3 | 14 | 4 | 3 | 15 | 4 | 3 | 16 | 4 |

我希望这有帮助吗?

阵 (     [1] =>排列         (             [11] =>排列                 (                     [0] =>五                 )

        [12] => Array
            (
                [0] => 5
            )

        [13] => Array
            (
                [0] => 5
            )

    )

[3] => Array
    (
        [14] => Array
            (
                [0] => 5
            )

        [15] => Array
            (
                [0] => 5
            )

        [16] => Array
            (
                [0] => 5
            )

    )

1 | 11 | 5 | 1 | 12 | 5 | 1 | 13 | 5 | 3 | 14 | 5 | 3 | 15 | 5 | 3 | 16 | 5 |

这是我的代码:

                foreach ($questionValue as $crit => $questions) {
                    foreach ($questions as $answer => $result) {
                        foreach($result as $value){
                            $criteria = $crit . "|" . $answer . "|" . $value . "|";
                            echo $criteria;
                        }
                    }
                }                 

2 个答案:

答案 0 :(得分:0)

你能提供输出吗?你能提供一个输入数组的例子吗?执行$string1的部分看起来没问题,如果没有上述数据,问题就可以得到解决。

这个看起来很奇怪:

foreach ( $answer as $result ){
                      $string3 = $result;
                      //echo $string3;
                  }

您可能想要添加条件(例如在条件中)或执行$string3 .= $result;

答案 1 :(得分:0)

我解决了这个问题:

我使用了串联值。

这是我的代码:

                foreach ($questionValue as $crit => $questions) {
                    foreach ($questions as $answer => $result) {
                        foreach($result as $value){
                            $string .= $crit . "|" . $answer . "|" . $value . "|";
                            //echo $criteria;
                        }
                    }
                  $criteria = $string;
                }