0

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

我想遍历每个问题并创建一个包含条件 id -> question 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 第 4 个是 id #14 答案是 4 第 5 个是 id #15 答案是4 6th 是 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] => 5 )

        [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|1​​4|5|3|1​​5|5|3|1​​6|5|

这是我的代码:

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

2 回答 2

0

我解决了这个问题:

我对值使用了连接。

这是我的代码:

                foreach ($questionValue as $crit => $questions) {
                    foreach ($questions as $answer => $result) {
                        foreach($result as $value){
                            $string .= $crit . "|" . $answer . "|" . $value . "|";
                            //echo $criteria;
                        }
                    }
                  $criteria = $string;
                }                 
于 2013-08-22T21:48:51.690 回答
0

你能提供输出吗?你能提供一个输入数组的例子吗?做的部分$string1看起来不错,如果没有上述数据,问题能否得到解决是令人怀疑的。

这个看起来很奇怪:

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

您可能想要添加一个条件(如标准)或做$string3 .= $result;

于 2013-08-22T16:30:12.527 回答