Суммирование значений из файла JSON в PHP

У меня есть файл JSON, который выглядит так:

[{
    "num": "37"
}, {
    "num": "79"
}, {
    "num": "21"
}, {

    "num": "12"
}, {
    "num": "90"
}]

Мне нужен мой скрипт для печати суммы этих чисел, вот что я пробовал:

<?php 
$dati = file_get_contents('data.json');
$elementi = json_decode($dati, true);
$test = 'test';

$sum = 0;
foreach($elementi['num'] as $key=>$value)
{
   $sum+= $value;
}


?>

Но я получил ошибку:

Notice: Undefined index: num in C:\xampp\htdocs\index.php on line 32

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\index.php on line 32

Я застрял здесь, и я не могу найти решение. Кто-нибудь может мне помочь?

Это была опечатка, исправил

Jack022 19.02.2019 11:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
191
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы всегда должны начинать с print_r() массива, если вы не уверены в его форме и содержании.

foreach($elementi as $arr)
{
   $sum+= $arr['num'];
}

Да, я заставил его работать с вашим же решением за 1 секунду до вашего ответа! Я приму ваш ответ в ближайшее время, спасибо :)

Jack022 19.02.2019 11:41

объявите $sum, прежде чем использовать его в foreach, иначе вы получите ошибку уведомления о неопределенной переменной.

Sayed Mohd Ali 19.02.2019 12:21

@SayedMohdAli Исходный код OP уже сделал это, поэтому, поскольку я только предложил мод для кода цикла, я не включил его в свой код.

RiggsFolly 19.02.2019 12:24

я бы сделал

 $sum = array_sum(array_column($arr, 'num'));

Но это всего лишь я...

Результат

239

Песочница

Столбец массива вытягивает все значения для «ключа» (в данном случае «число») и создает такой массив:

   ["37", "79", ...]

Затем Array Sum даст вам сумму массива чисел.

  • Вы можете использовать функцию array_sum
  • версия php с: PHP 5 >= 5.5.0
$sum = array_sum(array_column($elementi, 'num'));

Другие вопросы по теме