Как получить из многомерного массива два значения в массив? Laravel

286
16 сентября 2021, 07:10

Всем привет, подскажите пожалуйста, как получить из многомерного массива два значения в массив? чтобы потом можно было к каждому из них обращаться Laravel

Сейчас я получаю ларавелевским хелпером только одно значение дату.

вот мой код

public function getApiHolidays() 
    { 
        $apiDate = json_decode(file_get_contents('https://www.googleapis.com/calendar/v3/calendars/russian__ru%40holiday.calendar.google.com/events?key=AIzaSyC8khrJO57yl4szjLOuyQrlW7R_CKgwaH0'),1); 
        $holidayDates = Arr::pluck($apiDate['items'], 'start.date'); 
 
 
 
        $array = array_filter($holidayDates, function($var){ 
            return substr($var, 0, 4) === date("Y"); 
        }); 
 
        dd($apiDate, $array, $holidayDates); 
         
        return $array; 
 
    }

Answer 1

Третим аргуметом метод Arr::pluck принимает ключ значения, можно в качестве ключа использовать дату, а в качестве значения - название.

public function getApiHolidays()
{
    $apiDate = json_decode(file_get_contents('https://www.googleapis.com/calendar/v3/calendars/russian__ru%40holiday.calendar.google.com/events?key=AIzaSyC8khrJO57yl4szjLOuyQrlW7R_CKgwaH0'), 1);
    $holidayDates = Arr::pluck($apiDate['items'], 'summary', 'start.date');
    $array = Arr::where($holidayDates, function ($title, $date) {
        return substr($date, 0, 4) === date("Y");
    });
    return $array;
}

Результат:

Array
(
    [2019-01-01] => Новый Год
    [2019-01-02] => Новогодние каникулы
    [2019-01-03] => Новогодние каникулы
    ...
)

Или можно просто перебрать массив и составить нужный:

public function getApiHolidays()
{
    $result = [];
    $apiDate = json_decode(file_get_contents('https://www.googleapis.com/calendar/v3/calendars/russian__ru%40holiday.calendar.google.com/events?key=AIzaSyC8khrJO57yl4szjLOuyQrlW7R_CKgwaH0'), 1);
    foreach ($apiDate['items'] as $item) {
        if (substr($item['start']['date'], 0, 4) !== date('Y')) {
            continue;
        }
        $result[] = [
            $item['start']['date'],
            $item['summary']
        ];
    }
    return $result;
}

Результат:

Array
(
    [0] => Array
        (
            [0] => 2019-01-01
            [1] => Новый Год
        )
    [1] => Array
        (
            [0] => 2019-01-02
            [1] => Новогодние каникулы
        )
    [2] => Array
        (
            [0] => 2019-01-03
            [1] => Новогодние каникулы
        )
     ....
)
READ ALSO
php запрос по нажатию кнопки и редирект

php запрос по нажатию кнопки и редирект

сделал sql запрос по нажатию кнопки следующим образом:

103
Как отправить и получить ассоциативный массив в Laravel?

Как отправить и получить ассоциативный массив в Laravel?

изучаю LaravelНе могу получить массив в blade

136
Как добавить guava библиотеку?

Как добавить guava библиотеку?

Как добавить guava библиотеку в Intellij Idea проект?

103