从 value[0] 开始缩短数组并更新键并删除未使用的数据

Short array and update key as of value[0] and remove unused data

到目前为止,这是我的数组,我正在使用此 php 函数分解 [category_name]

$query = $this->db->get('payment');

        $result = $query->result();

        // echo '<pre>';print_r($result);

        foreach ($result as $key => $category) {

            $category_sale_data = explode(',', $category->category_name);

            foreach ($category_sale_data as $key => $value) {

                $category->sale_data[] = explode('*', $value);

            }
            
            $newresults[]=$category;
        }
        
        $result=$newresults;

        echo '<pre>';print_r($result);
        die();

这是输出:

Array
(
    [0] => stdClass Object
        (
            [category_name] => 32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1
            [sale_data] => Array
                (
                    [0] => Array
                        (
                            [0] => 32459
                            [1] => 1500
                            [2] => lab
                            [3] => 1
                        )

                    [1] => Array
                        (
                            [0] => 32460
                            [1] => 400
                            [2] => lab
                            [3] => 1
                        )

                    [2] => Array
                        (
                            [0] => 32461
                            [1] => 600
                            [2] => lab
                            [3] => 1
                        )
                )
        )
)

我想要这样的输出

Array
(
    [0] => stdClass Object
        (
            [category_name] => 32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1
            [sale_data] => Array
                (
                    [32459] => Array
                        (
                            
                            [0] => 1500
                        )

                    [32460] => Array
                        (
                            [0] =>400
                        )

                    [32461] => Array
                        (
                            [0] => 600
                        )
                )
        )
)

我需要将记录更新为短数组,以便以后对我有用。我已经尽力了。 我是新手,正在学习 php 数组。

sale_data中添加数据之前需要提取键和值:

foreach ($category_sale_data as $key => $value) {
    [$sale_key, $sale_value] = explode('*', $value);
    $category->sale_data[$sale_key][] = $sale_value;
}

完整示例 - (livedemo)

// Sample data
$category = (object) ['category_name' => '32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1'];
// process
$category_sale_data = explode(',', $category->category_name);
foreach ($category_sale_data as $key => $value) {
    [$sale_key, $sale_value] = explode('*', $value);
    $category->sale_data[$sale_key][] = $sale_value;
}
// display
print_r($category);

输出:

stdClass Object
(
    [category_name] => 32459*1500*lab*1,32460*400*lab*1,32461*600*lab*1
    [sale_data] => Array
        (
            [32459] => Array
                (
                    [0] => 1500
                )
            [32460] => Array
                (
                    [0] => 400
                )
            [32461] => Array
                (
                    [0] => 600
                )
        )
)