У меня есть форма, имеющая 7 разных критериев. У каждого критерия есть 3 или 4 вопроса, на которые пользователь проверяет соответствующее значение.php looping через несколько массивов
Я хочу просмотреть каждый вопрос и создать строку, содержащую критерии id -> question id -> и answer value.
Я не могу заставить его работать.
Вот дамп массивов:
критерии массива:
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" }
критерии идентификатор, связанный с каждым вопросом
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, похоже, работают нормально. Строка1 не работает.
это выход приведенный выше код генерирует:
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 третий идентификатор # 13 ответ 5 четвёртых является идентификатор # 14 ответа 4 пятым это идентификатор # 15 ответа 4 шестым это идентификатор # 16 ответа 4
массива идентификатора критерии свалки выше связанной с этим критерии, идет с каждым вопрос. если вы посмотрите на свалке можно увидеть первые 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 | 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;
}
}
}
Я добавил выход к первоначальному вопросу – user2091928
пожалуйста, вы можете предоставить входные данные тоже? (+, возможно, ожидаемый выход вручную для ввода) –
Я добавил вход – user2091928