Извлечение данных за последний месяц из firebase Php

#php #laravel

#php #laravel

Вопрос:

Я хочу получить данные о количестве имен за последний месяц из базы данных с помощью php.

Я сохраняю поле данных, как показано ниже:

 {
  "2019-04-11": [
    "alex",
    "jhon",
    "vinu"
  ],
  "2019-04-12": [
    "Mario",
    "pech"
  ]
}
  

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

1. Можете ли вы показать нам свои усилия / фрагменты, которые вы пробовали до сих пор?

2. Какие запросы вы пробовали и какую ошибку они выдают? Как вы думаете, что вы делаете не так? Покажите нам, что вы хотя бы пытались…

3. Я не пробовал.

Ответ №1:

Если я понимаю ваш вопрос, следующий подход может помочь.

  • Декодируйте свои JSON данные в массив с помощью json_decode(). Результатом будет массив с датами в качестве ключей и именами в качестве значений.
  • Цикл генерирует этот массив, преобразует ключ в date с помощью DateTime::createFromFormat(), сравнивает даты и подсчитывает имена:

PHP:

 <?php

# JSON
$json = '
    {
    "2019-04-11": [
        "alex",
        "jhon",
        "vinu"
    ],
    "2019-04-12": [
        "Mario",
        "pech"
    ]
    }
';
$data = json_decode($json, true);

# Count names
$count = 0;
foreach ($data as $key => $value) {
    $date = DateTime::createFromFormat('Y-m-d', $key);
    if ($date->format('Y-m') == '2019-04') {
        $count  = count($value);    
    }
}

# Output
echo 'Count: '.$count;  
?>
  

Ответ №2:

Попробуйте с этим,

Сначала разделите вашу пару ключ-значение на два массива, используя array_divide()

Приведенный ниже код вернет вам месяц

 explode('-',array_divide($arr)[0][0])[1]
  

explode принимает только строку, поэтому она помещается в это место

 array_divide($arr)[0][0]
  

explode разделит массив из -, а месяц занимает второе место, что означает 1 индекс.

и он вернет количество

count(array_divide($arr)[1][0])

Считайте $arr , что равно вашей переменной.

Надеюсь, это поможет 🙂