下記に記載したようなphpがあり
jsonファイルのデータをphp用に変換し、foreachを使って
$timに"code"がキーで"time"が値になる配列を作った時に
"code"(キー)が同じ場合だと後の値の方が上書きされるとのことだったのですが
上書きされる前に同じ配列の同じキー同士の数値を合わせる方法はありますでしょうか。
php
1require "test.php"; 2//jsonファイルのデータを取ってくるphp 3 4$dat = array(); 5foreach(glob('data/*.json') as $file){ 6 if(is_file($file)){ 7 $files = file_get_contents($file); 8 $data = mb_convert_encoding($files, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 9 $array = json_decode($data, true); 10 if($array === NULL){ 11 continue; 12 } 13 14 foreach($array as $key =>$value){ 15 foreach($value["daily"] as $key2 =>$value2){ 16 $count = array(); 17 $count = array_column($value2["Record"],'code'); 18 $tim = array(); 19 $tim = array_column($value2["Record"],'time','code');
[ { "date": "2019-02-01", "dailyWorkings": [ { "date": "2019-02-01", "currentDateEmployee": { "code": "014", "fName": "なまえ", "lName": "名前", }, "timeRecord": [ { "time": "2019-02-01T09:56:48+09:00", "code": "1", }, { "time": "2019-02-01T19:24:58+09:00", "code": "2", }, { "time": "2019-02-01T14:03:05+09:00", "code": "3", }, { "time": "2019-02-01T15:04:13+09:00", "code": "4", } ] }, { "date": "2019-02-01", "currentDateEmployee": { "code": "015", "lastName": "なまえ", "firstName": "ナマエ", }, "Record": [ { "time": "2019-02-01T09:54:36+09:00", "code": "1", }, { "time": "2019-02-01T19:57:56+09:00", "code": "2", }, { "time": "2019-02-01T13:44:14+09:00", "code": "3", }, { "time": "2019-02-01T20:47:47+09:00", "code": "3", }, { "time": "2019-02-01T20:55:34+09:00", "code": "4", }, { "time": "2019-02-01T15:43:24+09:00", "code": "4", } ] } ] } ]
上記の図がjsonのデータで上記の図だと"code"が3と4のデータが2つあるのですが jsonをphpで配列にして その"time"の日にちはそのままで時間だけを合計して"code"3と4の差を求めたいのです。 "code"が1と2のように1つずつでしたら、それぞれを取り出して時間を $diff_hour2 = (strtotime("code"2のデータ) - strtotime("code"1の時間)) / 3600;で 差がでると思いますが、同じコードが2つあると 配列にした際に、後の"code"の"time"の数値が上書きされ、差が後の"time"の時間の差になってしまうので、2つ以上ある場合合計してそれから差を出したいのです。 まだ初心者で詳しくないので、認識の違い等があればそちらも合わせてお願いします。
はて、なにがしたいのか意図が分かりません。
jsonのサンプルください
```
[
{
"date": "2019-02-01",
"dailyWorkings": [
{
"date": "2019-02-01",
"currentDateEmployee": {
"code": "014",
"fName": "なまえ",
"lName": "名前",
},
"timeRecord": [
{
"time": "2019-02-01T09:56:48+09:00",
"code": "1",
},
{
"time": "2019-02-01T19:24:58+09:00",
"code": "2",
},
{
"time": "2019-02-01T14:03:05+09:00",
"code": "3",
},
{
"time": "2019-02-01T15:04:13+09:00",
"code": "4",
}
]
},
{
"date": "2019-02-01",
"currentDateEmployee": {
"code": "015",
"lastName": "なまえ",
"firstName": "ナマエ",
},
"Record": [
{
"time": "2019-02-01T09:54:36+09:00",
"code": "1",
},
{
"time": "2019-02-01T19:57:56+09:00",
"code": "2",
},
{
"time": "2019-02-01T13:44:14+09:00",
"code": "3",
},
{
"time": "2018-08-01T20:47:47+09:00",
"code": "3",
},
{
"time": "2018-08-01T20:55:34+09:00",
"code": "4",
},
{
"time": "2018-08-01T15:43:24+09:00",
"code": "4",
}
]
}
]
}
]
```
一部抜粋ですがこのような感じの内容です。
回答2件
あなたの回答
tips
プレビュー