2015-05-21 121 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的簡單約定......