2013-08-22 2 views
0

У меня есть форма, имеющая 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; 
         } 
        } 
       }     

ответ

0

Можете ли вы предоставить вывод? Можете ли вы привести пример входных массивов? Часть, выполняющая $string1, выглядит нормально, без вышеупомянутых данных это сомнительно, что проблема может быть решена.

Это выглядит странно:

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

Вы можете или хотите добавить условие (например, в критериях) или сделать $string3 .= $result;

+0

Я добавил выход к первоначальному вопросу – user2091928

+0

пожалуйста, вы можете предоставить входные данные тоже? (+, возможно, ожидаемый выход вручную для ввода) –

+0

Я добавил вход – user2091928

0

Я установил вопрос:

Я использовал конкатенацию для значения.

Вот мой код:

   foreach ($questionValue as $crit => $questions) { 
        foreach ($questions as $answer => $result) { 
         foreach($result as $value){ 
          $string .= $crit . "|" . $answer . "|" . $value . "|"; 
          //echo $criteria; 
         } 
        } 
        $criteria = $string; 
       }     
Смежные вопросы