Php 循环遍历数组数组并按id提取数据

Php 循环遍历数组数组并按id提取数据,php,Php,我有一个带有id、日期、度假人数和地点的数组。我需要在单独的数组中按id提取id、日期、价格和位置,如下所示: Array ( 0 => '6, 2020-01-01, Four people, United Kingdom, 1200.00', 1 => '2, 2012-04-12, Three people, Australia. 600.00', 2 => '6, 2018-08-06, Holiday of two, Canada, 2100

我有一个带有id、日期、度假人数和地点的数组。我需要在单独的数组中按id提取id、日期、价格和位置,如下所示:

Array ( 
    0 => '6, 2020-01-01, Four people, United Kingdom, 1200.00',
    1 => '2, 2012-04-12, Three people, Australia. 600.00',
    2 => '6, 2018-08-06, Holiday of two, Canada, 2100.00'
...
)
这是我想要的输出,每个id的数组

$perPersonId = [
    [
        [0]=>2020-01-01,
        [1]=>6,
        [2]=>1200.00,
    ],
    [
        [0]=>2015-12-31,
        [1]=>6,
        [2]=>2100.00,
    ]
.....
];
这就是我目前所拥有的

function x (array $holidays)
{
    foreach($holidays as $holiday) {
        $holidayPerPerson = array_filter (explode(',', $holiday), function ($h) use ($holiday) {
            // not sure what to do here to group holidays per id
        });
    }
    // return array of holidays per person id
}
1。您可以应用
foreach()
并在其中使用
explode()

function x (array $holidays)
{
    foreach($holidays as &$holiday) { //passing by reference
        $holiday= explode(', ',$holiday);
    }
    return $holidays;
}
输出:-

2.正如您所说,您希望按id进行分组,请执行以下操作:

function x (array $holidays)
{
    $finalArray = [];
    foreach($holidays as $holiday) {
        $holidays= explode(', ',$holiday);
        $finalArray[$holidays[0]] = (isset($finalArray[$holidays[0]])) ? array_merge($finalArray[$holidays[0]],$holidays) : $holidays;
    }
    return $finalArray;
}

print_r(x($holidays));

输出:-

1200.002100.00,
,它们来自您所需输出的位置?抱歉,忘记在数组中添加价格。