1

I have an array that looks like this:

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

And I want to input a new array into this array but inside calendar to achieve this output:

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

This is all happening from a form post.

<?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);
}

?>

I cant seem to merge the added array to the correct spot in the existing array.

Ideas?

2 Answers 2

1

try this

$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

you can shorten this up if you want, but this is as close to your code as possible ;)

Sign up to request clarification or add additional context in comments.

Comments

1

I would use array_push function instead of array_merge, because in your case array_merge changes the structure of return array as u combining inner array with new array.

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.