如何在 php 中分解数组

how to explode array in php

我有数据数组,这是我的数组

Array
(
    [0] => Array
        (
            [id] => 9,5
            [item] => Item A, Item B
        )

    [1] => Array
        (
            [id] => 3
            [item] => Item C
        )
)

数组0中有两个ID,我用逗号隔开,我想把数据提取到一个新数组中,如何解决?

所以输出是这样的

Array
(
    [0] => Array
        (
            [id] => 9
            [item] => Item A
        )

    [1] => Array
        (
            [id] => 3
            [item] => Item C
        )
    [2] => Array //new array 
        (
            [id] => 5
            [item] => Item B
        )
)

这是我的代码

$arr=array();
foreach($myarray as $val){
    $arr[] = array(
        'id' => $val['id'],
        'item' => $val['item'],
    );
}
echo '<pre>', print_r($arr);

下面的代码应该可以完成这项工作。但是我不明白你为什么不首先单独创建这些项目。

foreach ($arr as $i => $data) {
    if (!str_contains($data['id'], ',')) continue;

    $items = explode(',', $data['item']);

    foreach(explode(',', $data['id']) as $i => $id) {
        $new = ['id' => $ids[$i], 'item' => $items[$i]];

        if ($i) $arr[] = $new;
        else $arr[$i] = $new;
    }
}
$arr = [
    array(
        'id' => '9,5',
        'item' => 'Item A, Item B'
    ),
    array(
        'id' => 3,
        'item' => 'Item C'
    )
];

$newArr = array_reduce($arr, function($tmp, $ele){
    $arrIds = explode(',', $ele['id']);
    $arrItems = explode(',', $ele['item']);
    forEach($arrIds as $key => $arrId) {
        $tmp[] = array('id' => $arrId, 'item' => $arrItems[$key]);
    }
    return $tmp;
});