Просмотрите json и подсчитайте значения

Спокойной ночи. Я пытаюсь получить доступ ко всем значениям availableForExchange при возврате страницы ниже:

[
   {
      "code":"18707498",
      "date":"2019-01-23T16:58:01",
      "totalPriceInCents":14450,
      "orderTotalPriceInCents":14450,
      "status":"PGTO_NAO_CONFIRMADO",
      "availableForExchange":false,
      "paymentType":"CREDIT_CARD",
      "installmentValueInCents":7225,
      "installmentsNumber":2,
      "paymentSummaries":[
         {
            "paymentType":"CREDIT_CARD",
            "installmentsNumber":2,
            "installmentValueInCents":7225,
            "valueInCents":14450
         }
      ],
      "hasGiftCard":false
   },
   {
      "code":"019741817156",
      "date":"2017-06-11T19:09:06",
      "totalPriceInCents":19110,
      "orderTotalPriceInCents":19110,
      "status":"ENTREGA_EFETUADA",
      "availableForExchange":false,
      "paymentType":"CREDIT_CARD",
      "installmentValueInCents":9555,
      "installmentsNumber":2,
      "paymentSummaries":[
         {
            "paymentType":"CREDIT_CARD",
            "installmentsNumber":2,
            "installmentValueInCents":9555,
            "valueInCents":19110
         }
      ],
      "hasGiftCard":false
   }
]

Я уже пробовал следующие способы:

$data = curl_exec($ch);
$json = json_decode($data, true);
$str = $json['availableForExchange'];
print_r($str);

Мне нужно получить доступ ко всем значениям: availableForExchange, найти истинные значения и подсчитать (если это правда), и сохранить в переменную.

Стоит ли изучать 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 и хотите разрабатывать...
1
0
31
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

что вы хотите сделать, так это отфильтровать $json (это массив)

$found = array_filter($json, function($entry) { return $entry['availableForExchange']; });

echo 'Entries: '.count($found);
print_r($found);
Ответ принят как подходящий

Используя array_column для прямого доступа к значениям availableForExchange, вы можете использовать array_filter без обратного вызова (поскольку значения в этом столбце являются логическими):

$json = json_decode($data, true);
$available = count(array_filter(array_column($json, 'availableForExchange')));
echo "$available available for exchange\n";

Вывод (для ваших образцов данных)

0 available for exchange

Демо на 3v4l.org

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