2012-08-25 16 views
1

我想建立一个旅游行程系统。用户选择旅行日期,然后可以添加项目到每一天。关联两个单独的行程系统阵列

我有日期的阵列,存储格式为会话:

array(
    (int) 0 => '2012-08-25', 
    (int) 1 => '2012-08-26', 
    (int) 2 => '2012-08-27' 
) 

然后,他们将选择的景点,这是我希望在格式的数组存储:

array(
(int) 0 => array(
    'Attraction' => array(
     'attraction_id' =>'1', 
     'name' => 'Place One', 

    ) 
), 
(int) 1 => array(
    'Attraction' => array(
     'attraction_id' => '2', 
     'name' => 'Place Two', 

    ) 
), 

我想能够输出:

  • 2012-08-25
    • 将一个
    • 将两个
  • 2012年8月26日
    • 这里还没有!
  • 2012年8月27日
    • 这里还没有!

所以,第一个阵列的每个项目包含的项目组成的数组,如果是有道理的。我正在努力将days阵列的键与items阵列相关联的逻辑。

我看着array_merge但这似乎并没有做我所需要的。

有没有简单的方法来实现这一目标?

+0

您的示例与给出的规则不一致。地方二应该是在2012-08-26 –

回答

1

此代码完全符合您的要求。不幸的是,我担心你的问题并不能反映你举出这个例子的目标。使用键链接数据将导致1-1关系,因为你似乎需要1-n。你应该在景点数组中有一个外键字段,比如date_id。

$array= array(); 

foreach($dates as $date_key=>$date){ 
    $array[$date]=array(); 
    foreach($attractions as $attraction_key=>$attraction){ 
     if($date_key==$attraction_key){ 
      $array[$date][]=$attraction['Attraction']['name']; 
     } 
    } 
} 
+0

该代码是非常难以阅读与您所包含的空白的绝对最小值。 – IMSoP

+0

它对我来说很好。这是有道理的+我明白你的意思,要求1-n关系,回头看我的示例代码不是100%清晰。我会看到我如何继续这个,谢谢 – user1624421