как посчитать сумму значений из объекта json с помощью php

#php #json #count #sum

Вопрос:

У меня есть пара файлов json в каталоге data . Каждый файл json выглядит следующим образом:

 {
    "id": "id_2021-04-01_1300",
    "starttime": "13:00",
    "endtime": "18:00",
    "hours": 5
}
 

Чтобы подсчитать сумму всего hours вместе из всех файлов json, у меня есть этот код на php:

 $files = glob('data/*.json'); // all json-files in array
foreach($files as $file) {
    $hours_arrays[] = json_decode(file_get_contents($file), true);
}
$total_hours = 0;
foreach($hours_arrays as $key => $val) {
    $total_hours  = $val['hours'];
}
 

Согласно этому коду, $total_hours он должен содержать сумму всех часов из всех файлов json. Но я вернулся 0 . Что я делаю не так?

Комментарии:

1. var_dump($files) возвращает что? Включены ли у вас отчеты об ошибках?

2. это возвращает мне массив всех файлов json

3. что print_r($hours_arrays); это показывает?

4. хм, странно, это возвращает: array(0) { }

5. Может file_get_contents быть, это провал в таком случае? Логика кода верна 3v4l.org/GDcmB так что, вероятно, это разрешения или местоположение.

Ответ №1:

Я только что запустил ваш код, и он отлично работает. https://prnt.sc/1xzcibj. Отладьте, чтобы ваши файлы имели правильный путь и вы получали содержимое. Также проверьте проанализированное содержимое файлов в переменной $hours_arrays . Это должно выглядеть как переменная на моем скриншоте

Комментарии:

1. если это сработает, то будет закрытое голосование за опечатки/непродуктивность

2. Я не могу сказать, что это работает на этого человека. Он должен проверить правильность пути к файлам json и проверить содержимое файлов.