Мой JSON это:
{
"id1527":{"stats":"true"},
"id6376373":{"stats":"true"},
"id63737":{"stats":"true"}
}
как получить количество всех идентификаторов (например, «id1527» или «id6376373» …)
После анализа JSON, array_filter()
чтобы отфильтровать это только те, с ключом, который начинается с id
, а также count()
посчитать их:
count(array_filter(json_decode($json, true), function($key) {
return substr($key, 0, 2) == "id";
}, ARRAY_FILTER_USE_KEY));
Я надеюсь, что вы имеете в виду это.
$str = '{"id1527":{"stats":"true"},"id6376373":{"stats":"true"},"id63737":"stats":"true"},"x444":{"stats":"false"}}';
echo count(preg_grep("/^id(\d)+$/",array_keys(json_decode($str,true))));
Этот фрагмент кода проверяет, имеет ли ключ верхнего уровня массива JSON предшествующий текстовый «id», и учитывает только эти записи.
Декодировать в массив и считать элементы.
count(json_decode($json, true));