【问题标题】:Filtering, flattening and renaming keys in multidimensional array (Mayflower/Holidays)过滤、展平和重命名多维数组中的键(Mayflower/Holidays)
【发布时间】:2020-10-13 13:55:24
【问题描述】:

我在 Laravel 7 中使用 Mayflower/Holidays 来获取我所在地区的假期列表。我得到的 Json 是:

{"2":{"type":"holiday","name":"My Holiday 1","weight":1,"date":"2020-05-01 00:00:00.000000","timezone_type":3,"timezone":"Europe\/Berlin"},"5":{"type":"holiday","name":"My Holiday 2","weight":1,"date":"2020-05-20 00:00:00.000000","timezone_type":3,"timezone":"Europe\/Berlin"}}

没错,但我需要不同的表示。

[{"title":"My Holiday 1","start":"01.05.2020"},{"title":"My Holiday 2","start":"20.05.2020"}]

更轻、更一维,键 namedate 应该重命名为 titlestart。我试过了 使用foreacharray_map 的各种方法,但不断出错。使用 PHP 7 执行此操作的最佳方法是什么?

【问题讨论】:

    标签: arrays laravel php-7


    【解决方案1】:

    由于你也标记了 Laravel,我可以向你展示 Laravel Collection each() 方法。

    // your input
    $jsonHolidays = '{"2":{"type":"holiday","name":"My Holiday 1","weight":1,"date":"2020-05-01 00:00:00.000000","timezone_type":3,"timezone":"Europe\/Berlin"},"5":{"type":"holiday","name":"My Holiday 2","weight":1,"date":"2020-05-20 00:00:00.000000","timezone_type":3,"timezone":"Europe\/Berlin"}}';
    
    // convert json into array
    $arrayHolidays = json_decode($jsonHolidays, true);
    
    // Using laravel collection
    $holidays = [];
    collect($arrayHolidays)->each(function ($holiday) use (&$holidays) {
        $holidays[] = [
            'title' => $holiday['name'],
            'start' => \Carbon\Carbon::parse($holiday['date'])->format('d.m.Y')
        ];
    });
    
    // converting back to json
    return json_encode($holidays, true);
    

    【讨论】:

      【解决方案2】:

      只需decode json string 关联数组:

      $array = json_decode($jsonString, true);
      

      您可以使用array_mapforeach 并根据您的表示格式化数据。

      最后一步将是converting back array to json string:

      json_encode($jsonString);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-21
        • 2019-07-17
        • 2013-09-12
        • 2021-05-25
        • 2019-07-30
        • 1970-01-01
        • 2011-06-12
        相关资源
        最近更新 更多