2016-09-09 3 views
-4

Пример массива кода Append: https://eval.in/639002РНР для каждого массива

Гость с (идентификатор_пользователя = 1) купили несколько билетов (TICKET_ID = 1 & 2) на событии (event_id = 11).

Я ожидаю, формат результата:

[ticket] => Array 
(
    [1] => Ticket Name, *** 
    [2] => Ticket Name 
) 

Пример кода ниже:

$data_db = array(
    array(
     'id' => 1, 
     'user_id' => 1, 
     'event_id' => 11, 
     'ticket_id' => 1, 
     'user_name' => 'guest 1' 
    ), 
    array(
     'id' => 2, 
     'user_id' => 2, 
     'event_id' => 11, 
     'ticket_id' => 1, 
     'user_name' => 'guest 2' 
    ), 
    array(
     'id' => 3, 
     'user_id' => 3, 
     'event_id' => 22, 
     'ticket_id' => 1, 
     'user_name' => 'guest 3' 
    ), 
    array(
     'id' => 4, 
     'user_id' => 1, 
     'event_id' => 11, 
     'ticket_id' => 2, 
     'user_name' => 'guest 1' 
    ) 
); 

$output = []; 

foreach ($data_db as $key => $row) { 

    $output[ $row['event_id'] ]['event'] = 'Event Name';  
    $output[ $row['event_id'] ]['attendee'][ $row['user_id'] ] = $row; 

    $output[ $row['event_id'] ]['attendee'][ $row['user_id'] ]['ticket'][ $row['ticket_id'] ] = 'Ticket Name'; 

} 

print_r($output); 

Текущий результат

Array 
(
    [11] => Array 
     (
      [event] => Event Name 
      [attendee] => Array 
       (
        [1] => Array 
         (
          [id] => 4 
          [user_id] => 1 
          [event_id] => 11 
          [ticket_id] => 2 
          [user_name] => guest 1 
          [ticket] => Array 
           (
            [2] => Ticket Name 
           ) 

         ) 

        [2] => Array 
         (
          [id] => 2 
          [user_id] => 2 
          [event_id] => 11 
          [ticket_id] => 1 
          [user_name] => guest 2 
          [ticket] => Array 
           (
            [1] => Ticket Name *** 
           ) 

         ) 

       ) 

     ) 

    [22] => Array 
     (
      [event] => Event Name 
      [attendee] => Array 
       (
        [3] => Array 
         (
          [id] => 3 
          [user_id] => 3 
          [event_id] => 22 
          [ticket_id] => 1 
          [user_name] => guest 3 
          [ticket] => Array 
           (
            [1] => Ticket Name 
           ) 

         ) 

       ) 

     ) 

) 
+0

Pls дать пример , какой тип выходного массива вы хотите. –

ответ

0

Прежде вы могли начать с сортировки массива билетов из которых билет принадлежит пользователю:

$output = []; 

foreach($data_db as $key=>$row) { 
    // Define new $tickets Array E.g ['guest_name']=>['ticket_id'] 
    $tickets[$row['user_name']][] = $row['ticket_id']; 
    $output [] = [ 
       'id'=>$row['id'], 
       'user_id'=>$row['user_id'], 
       'event_id'=>$row['event_id'], 
       'user_name'=>$row['user_name'], 
       'tickets'=>[] 
       ]; 
} 

Ваш выход $ билетов будет выглядеть так:

Array 
(
    [guest 1] => Array 
     (
      [0] => 1 
      [1] => 2 
     ) 
    [guest 2] => Array 
     (
      [0] => 1 
     ) 
    [guest 3] => Array 
     (
      [0] => 1 
     ) 
) 

Тогда вы можете комбинировать их, как это:

foreach($output as $k=>$v){ 
foreach($tickets as $guest=>$ticket){ 

    if($v['user_name'] == $guest){ 
     $output[$k]['tickets'] = $ticket; 
    } 

    } 
} 

Ваш выход:

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [user_id] => 1 
      [event_id] => 11 
      [user_name] => guest 1 
      [tickets] => Array 
       (
        [0] => 1 
        [1] => 2 
       ) 

     ) 

    [1] => Array 
     (
      [id] => 2 
      [user_id] => 2 
      [event_id] => 11 
      [user_name] => guest 2 
      [tickets] => Array 
       (
        [0] => 1 
       ) 
       ........ 
Смежные вопросы