Как рассчитать длину значений JSON в php?

У меня есть JSON, как показано ниже, в котором я хочу вычислить через php, сколько значений присутствует внутри posts_id_en. В настоящее время это 7, как показано ниже:

{
    "posts_id_en": "149968, 149939, 149883, 149877, 149876, 149847, 154303",
    "posts_id_fr": "149974,149953,149926, 149920, 149901",
    "episode_status": "3"
}

В php-коде при выполнении echo $data->{"posts_id_en"}; он отображает значения, как показано ниже:

149968, 149939, 149883, 149877, 149876, 149847, 154303

Постановка задачи:

Мне интересно, какой php-код мне нужно использовать, чтобы мы могли вычислить количество значений, введенных внутри posts_id_en. В этот момент вводится 7, как показано выше.

Только регулярное выражение: $cnt = preg_match_all('/(?:\G(?!^)|"posts_id_en":\s*")[^",]+,?/', $str);, но я бы тоже предпочел json_decode :p

bobble bubble 27.05.2019 11:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
1
79
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

<?php

$json = '{
    "posts_id_en": "149968, 149939, 149883, 149877, 149876, 149847, 154303",
    "posts_id_fr": "149974,149953,149926, 149920, 149901",
    "episode_status": "3"
}';
$decoded = json_decode($json, true);
$post_id = $decoded['posts_id_en'];

$resultList = [];
foreach($decoded as $key => $entry) {
    $everyNumberAsArray = explode(',', $entry);    
    $count = count($everyNumberAsArray);
    $resultList[$key] = $count;
}

var_export($resultList);

дает вывод:

array (
  'posts_id_en' => 7,
  'posts_id_fr' => 5,
  'episode_status' => 1,
)

чтобы получить определенные значения, вы используете их следующим образом:

echo $resultList['posts_id_en'] . '<br>' . PHP_EOL;

что дает вам:

7

избили меня, чтобы опубликовать, пока я работал над ответом: P

Alo 26.05.2019 23:33

@Jimmix Я обновил свой вопрос. В моем вопросе была небольшая ошибка.

flash 26.05.2019 23:39

@ Ало, в прошлый раз я был недостаточно осторожен, поэтому ты сделал это :P

Jimmix 26.05.2019 23:40
Ответ принят как подходящий

Элементы, которые вы пытаетесь подсчитать, находятся в одной строке. Во-первых, вы должны разбить строку на элементы, затем вы можете их посчитать.

Возьмите json и превратите его в массив php

$jsonData = '{
    "posts_id_en": "149968, 149939, 149883, 149877, 149876, 149847, 154303",
    "posts_id_fr": "149974,149953,149926, 149920, 149901",
    "episode_status": "3"
}';
$data = json_decode($jsonData, true);

затем разделите строку разделителем ","

$items = explode(", ", $data['posts_id_en']);

затем посчитайте

echo count($items);

В моем вопросе была небольшая ошибка. Я немного изменил свой вопрос.

flash 26.05.2019 23:38

Я обновил свой ответ на ваш новый json, но это не имеет значения.

Alo 26.05.2019 23:53

У меня есть еще один вопрос. Это не похоже. Мне интересно, можете ли вы взглянуть.

flash 03.06.2019 19:04

Одним из простых способов было бы сначала json_decode, затем проверить числа в нашем желаемом атрибуте и подсчитать совпадения:

$str = '{
    "posts_id_en": "149968, 149939, 149883, 149877, 149876, 149847, 154303",
    "posts_id_fr": "149974,149953,149926, 149920, 149901",
    "episode_status": "3"
}';

$str_array = json_decode($str, true);

preg_match_all('/(\d+)/s', $str_array["posts_id_en"], $matches);

echo sizeof($matches[0]);

Выход

7

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