2015-08-05 2 views
0

Я создал форму, которая создает многомерный массив сообщений. Я хочу изменить массив, чтобы я мог вставить его в таблицу.создать ассоциативный массив из многомерного ассоциативного массива сообщений - Codeigniter

Это массив сообщений, который возвращается.

Array 
(
    [project_no] => 160 
    [result] => Array 
    (
     [5] => Array 
      (
       [temp_dwg_rev] => D 
       [temp_dwg_id] => 5 
      ) 

     [6] => Array 
      (
       [temp_dwg_rev] => D 
       [temp_dwg_id] => 6 
      ) 

     [7] => Array 
      (
       [temp_dwg_rev] => E 
       [temp_dwg_id] => 7 
      ) 
    ) 


    [client] => Array 
     (
      [1] => Array 
       (
        [client_id] => 1 
       ) 

      [3] => Array 
       (
        [client_id] => 3 
       ) 

     ) 

) 

Поэтому я полагаю, что массив должен выглядеть примерно так, чтобы получить запрос на работу

Array 
(
[0] => Array 
    (
     [temp_dwg_id] => 5 
     [temp_dwg_rev] => D 
     [project_no] => 160 
     [client_id] => 1 
    ) 

[1] => Array 
    (
     [temp_dwg_id] => 6 
     [temp_dwg_rev] => D 
     [project_no] => 160 
     [client_id] => 1 
    ) 

[2] => Array 
    (
     [temp_dwg_id] => 7 
     [temp_dwg_rev] => E 
     [project_no] => 160 
     [client_id] => 1 
    ) 
[3] => Array 
    (
     [temp_dwg_id] => 5 
     [temp_dwg_rev] => D 
     [project_no] => 160 
     [client_id] => 3 
    ) 

[4] => Array 
    (
     [temp_dwg_id] => 6 
     [temp_dwg_rev] => D 
     [project_no] => 160 
     [client_id] => 3 
    ) 

[5] => Array 
    (
     [temp_dwg_id] => 7 
     [temp_dwg_rev] => E 
     [project_no] => 160 
     [client_id] => 3 
    ) 
) 

Моя таблица в БД выглядит следующим образом. Примечание. slip_id автоматически увеличивается.

|slip_id |project_no |client_id |temp_dwg_id |temp_dwg_rev 
|1  |160  |1   |5   |D 
|2  |160  |1   |6   |D 
|3  |160  |1   |7   |E 
|4  |160  |3   |5   |D 
|5  |160  |3   |6   |D 
|6  |160  |3   |7   |E 

Я попытался следующий код, но это создает массив только temp_dwg_id, temp_dwg_rev и project_on в ассоциативном массиве. Мне еще нужно добавить массив клиента к этому

 $drawings = $_POST['result']; 
     $dist = $_POST['client']; 
     $project_no = $_POST['project_no']; 

     $test = array(); 
     foreach ($drawings as $row) 
     { 
      $test[$row['temp_dwg_id']]['temp_dwg_id']= $row['temp_dwg_id']; 
      $test[$row['temp_dwg_id']]['temp_dwg_rev']= $row['temp_dwg_rev']; 
      $test[$row['temp_dwg_id']]['project_no']= $project_no; 

     } 
+1

Можете ли вы поделиться тем, что вы пробовали ? –

ответ

0

Дайте этому попытку:

foreach($dist as $client) 
{ 
    foreach($drawings as $drawing) 
    { 
    //determine the index for your current drawings 
    $index = count($test); 
    $test[$index]['temp_dwg_id']= $drawing['temp_dwg_id']; 
    $test[$index]['temp_dwg_rev']= $drawing['temp_dwg_rev']; 
    $test[$index]['project_no']= $project_no; 
    $test[$index]['client_id']= $client['client_id']; 
    } 
} 

Edited показать пример использования array_push()

foreach($dist as $client) 
{ 
    foreach($drawings as $drawing) 
    { 
    $newDrawing = array(
     'temp_dwg_id' => $drawing['temp_dwg_id'], 
     'temp_dwg_rev' => $drawing['temp_dwg_rev'], 
     'project_no' => $project_no, 
     'client_id' => $client['client_id'], 
    ); 
    array_push($test, $newDrawing); 
    } 
} 
+0

Спасибо большое, что сработало очень хорошо. Я все еще пытаюсь понять, почему это работает. Однако я получаю сообщение об ошибке для 'client_id', которое говорит об этом ** Сообщение: Недопустимое смещение строки 'client_id' ** –

+0

Я выяснил, почему это дало ошибку. Я меняю что-то на форме на странице просмотра. –

+0

Почему бы не использовать 'array_push()' вместо этого? – CodeGodie

Смежные вопросы