2013-03-21 89 views
1

我有一个数组,看起来像这样:插入数组多维数组

{"calendar":{"date":"1","event":"1","description":"","code":"lab"}} 

我想输入一个新的数组到这个阵列,但里面日历来实现这样的输出:

{"calendar": 
    {"date":"1","event":"1","description":"","code":"lab"} 
    {"date":"2","event":"2","description":"","code":"lab"} 
} 

这一切都发生在一个表单发布。

<?php 
$dy_date = $_GET['dy_date']; 
$dy_event = $_GET['dy_event']; 
$dy_description = $_GET['dy_description']; 
$dy_code = $_GET['dy_code']; 

$calendar = array("calendar" => array("date" => $dy_date, "event" => $dy_event, "description" => $dy_description, "code"=> $dy_code)); 


$calendar_check = json_decode(file_get_contents('../calendar_dynamic.js'),true); 

$updated_cal = array(); 
foreach($calendar_check as $data){ 
    $updated_cal["date"] = $dy_date; 
    $updated_cal["event"] = $dy_event; 
    $updated_cal["description"] = $dy_description; 
    $updated_cal["code"] = $dy_code; 
    $updated_cal = array_merge($calendar_check['calendar'], $updated_cal); 
    $filename = "../calendar_dynamic.js"; 
    file_put_contents($filename, json_encode($updated_cal), FILE_APPEND); 
} 

?> 

我似乎不能将添加的数组合并到现有数组中的正确位置。

想法?

回答

1

试试这个

$filename = "../uc3_stats/calendar_dynamic.js"; 

$dy_date = $_GET['dy_date']; 
$dy_event = $_GET['dy_event']; 
$dy_description = $_GET['dy_description']; 
$dy_code = $_GET['dy_code']; 

$newentry_calendar = array("calendar" => array("date" => $dy_date, "event" => $dy_event, "description" => $dy_description, "code"=> $dy_code)); 

$old_calendar = json_decode(file_get_contents($filename),true); 

$new_calendar = $old_calendar; //keep old entries 
$new_calendar['calendar'][] = $newentry_calendar['calendar']; //add new entry 
file_put_contents($filename, json_encode($new_calendar)); // save to file 

,你可以,如果你想缩短这个,但是这是接近你的代码成为可能;)

+0

谢谢像魅力一样工作。 – JMP 2013-03-21 18:58:48

+0

不客气。 – itsid 2013-03-23 00:38:21

1

我会用array_push函数代替array_merge,因为在你的case array_merge将返回数组的结构更改为将内部数组与新数组组合在一起。

array_push ($calendar_check['calendar'], $updated_cal)