2015-05-21 2 views
2

Я хочу изменить формат массива в соответствии с моими потребностями. Когда я извлекаю данные из базы данных с помощью метода cakephp find('all'), он возвращает то, что не соответствует ожидаемому мне формату.вопрос о выпуске массива PHP

Мой результирующий массив:

Array 
(
    [0] => Array 
     (
      [DriverLocation] => Array 
       (
        [id] => 15 
        [dispensary_id] => 1 
        [driver_id] => 85 
        [zip_code_id] => 43 
        [created] => 2015-05-20 12:25:34 
       ) 

      [ZipCode] => Array 
       (
        [id] => 43 
        [province_id] => 3846 
        [city] => Rohtak 
        [zip_code] => 15478 
        [status] => active 
       ) 

      [UserProfile] => Array 
       (
        [first_name] => Arman 
        [last_name] => Kumar 
       ) 

     ) 

    [1] => Array 
     (
      [DriverLocation] => Array 
       (
        [id] => 19 
        [dispensary_id] => 1 
        [driver_id] => 43 
        [zip_code_id] => 42 
        [created] => 2015-05-20 12:37:12 
       ) 

      [ZipCode] => Array 
       (
        [id] => 42 
        [province_id] => 3846 
        [city] => Rohtak 
        [zip_code] => 30215 
        [status] => active 
       ) 

      [UserProfile] => Array 
       (
        [first_name] => Pawan 
        [last_name] => Kumar 
       ) 

     ) 

    [2] => Array 
     (
      [DriverLocation] => Array 
       (
        [id] => 20 
        [dispensary_id] => 1 
        [driver_id] => 83 
        [zip_code_id] => 42 
        [created] => 2015-05-20 12:37:28 
       ) 

      [ZipCode] => Array 
       (
        [id] => 42 
        [province_id] => 3846 
        [city] => Rohtak 
        [zip_code] => 30215 
        [status] => active 
       ) 

      [UserProfile] => Array 
       (
        [first_name] => Ramesh 
        [last_name] => Saini 
       ) 

     ) 

    [3] => Array 
     (
      [DriverLocation] => Array 
       (
        [id] => 26 
        [dispensary_id] => 1 
        [driver_id] => 83 
        [zip_code_id] => 43 
        [created] => 2015-05-20 12:43:59 
       ) 

      [ZipCode] => Array 
       (
        [id] => 43 
        [province_id] => 3846 
        [city] => Rohtak 
        [zip_code] => 15478 
        [status] => active 
       ) 

      [UserProfile] => Array 
       (
        [first_name] => Ramesh 
        [last_name] => Saini 
       ) 

     ) 

    [4] => Array 
     (
      [DriverLocation] => Array 
       (
        [id] => 41 
        [dispensary_id] => 1 
        [driver_id] => 83 
        [zip_code_id] => 6 
        [created] => 2015-05-21 05:23:53 
       ) 

      [ZipCode] => Array 
       (
        [id] => 6 
        [province_id] => 3846 
        [city] => Whittier 
        [zip_code] => 90607 
        [status] => active 
       ) 

      [UserProfile] => Array 
       (
        [first_name] => Ramesh 
        [last_name] => Saini 
       ) 

     ) 

) 

И я хочу, чтобы преобразовать его в нечто вроде этого:

Array 
(
    [DriverLocation] => Array 
     (
      [id] => 15 
      [dispensary_id] => 1 
      [driver_id] => 85 
     ) 

    [ZipCode] => Array 
     (
      [zip_code] => Array 
       (
        [0] => 15478 
       ) 

      [city] => Array 
       (
        [0] => Rohtak 
       ) 

     ) 

    [UserProfile] => Array 
     (
      [first_name] => Arman 
      [last_name] => Kumar 
     ) 

) 
Array 
(
    [DriverLocation] => Array 
     (
      [id] => 19 
      [dispensary_id] => 1 
      [driver_id] => 43 
     ) 

    [ZipCode] => Array 
     (
      [zip_code] => Array 
       (

        [0] => 30215 
       ) 

      [city] => Array 
       (
        [0] => Rohtak 

       ) 

     ) 

    [UserProfile] => Array 
     (
      [first_name] => Pawan 
      [last_name] => Kumar 
     ) 

) 
Array 
(
    [DriverLocation] => Array 
     (
      [id] => 20 
      [dispensary_id] => 1 
      [driver_id] => 83 
     ) 

    [ZipCode] => Array 
     (
      [zip_code] => Array 
       (

        [0] => 30215 
        [1] => 15478 
        [2] => 90607 

       ) 

      [city] => Array 
       (
        [0] => Rohtak 
        [1] => Rohtak 
        [2] => Whittier 
       ) 

     ) 

    [UserProfile] => Array 
     (
      [first_name] => Ramesh 
      [last_name] => Saini 
     ) 

) 

Фильтр по DriverLocation->driver_id

+6

Почему бы вам не сделать это? Оригинальный формат имеет всю информацию, легкодоступную. Ваш предложенный формат распространяет элементы массива по неизвестному числу переменных и ничего не добавляет к удобочитаемости любого кода, который вы могли бы написать для него. –

+0

благодарит за замечание. но проблема возникает, когда я хочу показать эти данные на веб-странице, используя таблицу, тогда она генерирует повторяющиеся строки. что я не хочу. – iam

+0

Если вы случайно получите такой выход, то через массив он станет кошмаром. Просто говорю. – Kishor

ответ

0

Кажется, что эти массивы точно так же, , за исключением того, что вы помещаете каждую «запись» из DriverLocation в свою собственную переменную. Идея здесь в том, что вы получаете данные из модели DriverLocation в вымышленном контроллере и помещаете ее в переменную; например:

$allDriverLocations = $this->DriverLocation->find("all"); 

Теперь $allDriverLocations содержит первый из ваших упомянутых массивов. Следующий шаг должен передать его мнению:

$this->set(compact("allDriverLocations")); 

И теперь, чтобы создать таблицу в соответствующем окне вы должны перебирать $allDriverLocations:

<table> 
<tbody> 

<?php 
// Loop through the array with a foreach 
foreach($allDriverLocations as $driverLocation){ 
    // Create the table row here using the HtmlHelper. 
    // If you want to reach "Rohtak" for example, you use $driverLocation["Zipcode"]["city"] to print it. 
} 
?> 

</tbody> 
</table> 

Я не знаю, почему вы не должны следуйте простым соглашениям Cake ...

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