Добавить значения к массиву значений массива и вывести в таблицу - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть и массив с данными:

$array = [
   0=>1
   1=>jon
   2=>jon@email.com
   3=>9-18-2018
   4=>2
   5=>doe
   6=>doe@email.com
   7=>9-18-2018
   8=>3
   9=>foo
   10=>foo@email.com
   11=>9-18-2018
]

Затем я разделяю этот массив и вывод в виде таблицы

    @foreach(array_chunk($array, 4) as $data)
     <tr>
     @foreach($data as $i => $chunked_data)
       <td>
          {{$data[$i]}}
       </td>
     @endforeach
     </tr>
   @endforeach

И у меня есть токовый выход:

ID  Name     Email           Created at
1   Jon    jon@email.com      9-18-2018
2   Doe    doe@email.com      9-18-2018
3   Foo    foo@email.com      9-18-2018

Что мне нужно, это сказать, какая запись является типом данных для второго массива.

Итак, первая, из которой я создал таблицу, - это массив chunked:

  $array = [
   array[
      0=>1
      1=>Joe
      2=>joe@email.com
      3=>9-18-2018
   ]
     array[
      0=>1
      1=>Doe
      2=>doe@email.com
      3=>9-18-2018
   ]
     array[
      0=>1
      1=>Foo
      2=>foo@email.com
      3=>9-18-2018
   ]
]

2-й - это простой массив:

$data_types = [
      0=>int
      1=>string
      2=>string
      3=>date
]

Итак, я предполагаю, что мне нужно объединить 1-й и 2-й массив примерно так:

    $data_types = [
   0=>1 [int]
   1=>Joe [string]
   2=>joe@email.com [string]
   3=>9-18-2018 [date]
]

Итак, мой желаемый результат:

  ID        Name             Email                Created at
1(int)   Jon(string)    jon@email.com(string)      9-18-2018(date)
2(int)   Doe(string)    doe@email.com(string)      9-18-2018(date)
3(int)   Foo(string)    foo@email.com(string)      9-18-2018(date)

Имейте в виду, что я должен достичь этого, комбинируя 2 массива, где один из них - чистые данные, а второй - типы данных.

Я нахожусь на laravel, но простых примеров php было бы многоценится также.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018
$array = [
0=>1
1=>jon
2=>jon@email.com
3=>9-18-2018
4=>2
5=>doe
6=>doe@email.com
7=>9-18-2018
8=>3
9=>foo
10=>foo@email.com
11=>9-18-2018
];
$data_types = [
  0=>int
  1=>string
  2=>string
  3=>date
];
foreach(array_chunk($array,4) as $data) {
     @foreach(array_chunk($array, 4) as $data)
 <tr>
 @foreach($data as $i => $chunked_data)
   <td>
      {{$chunked_data}}{{$data_types[$i]}}  //the order of the datas is certain so you can use the index directly
   </td>
 @endforeach
 </tr>
 @endforeach
}
0 голосов
/ 18 сентября 2018

Вы можете использовать индекс, представленный $i в вашем коде, чтобы получить тип, ссылаясь на второй массив:

@foreach(array_chunk($array, 4) as $data)
    <tr>
        @foreach($data as $i => $chunked_data)
            <td>
                {{$data[$i]}} {{$data_types[$i]}}
            </td>
        @endforeach
    </tr>
@endforeach

Надеюсь, это поможет.

Редактировать:

Для примера на чистом PHP:

$array = array(
    array(
        1,
        'Joe',
        'joe@email.com',
        '9-18-2018'
    ),
    array(
        2,
        'Doe',
        'doe@email.com',
        '9-18-2018',
    ),
    array(
        3,
        'Foo',
        'foo@email.com',
        '9-18-2018',
    )
);

$data_types = array(
    'int',
    'string',
    'string',
    'date'
);

foreach ($array as $chunked) {
    foreach ($chunked as $key => $data) {
        echo "{$data} {$data_types[$key]} | ";
    }
    echo "\n";
}

Вывод:

1 int | Joe string | joe@email.com string | 9-18-2018 date |
2 int | Doe string | doe@email.com string | 9-18-2018 date |
3 int | Foo string | foo@email.com string | 9-18-2018 date |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...