【问题标题】:Short array and update key as of value[0] and remove unused data从 value[0] 开始的短数组和更新键并删除未使用的数据
【发布时间】:2022-01-22 14:22:08
【问题描述】:

到目前为止,这是我的数组,我正在使用这个 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 数组。

【问题讨论】:

    标签: php arrays codeigniter multidimensional-array


    【解决方案1】:

    sale_data中添加数据之前需要提取key和value:

    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
                    )
            )
    )
    

    【讨论】:

    • 感谢您的帮助,但它不起作用,因为示例数据在数组而不是 stdClass 对象中,请编辑答案并使其与示例数组一起使用,以便我可以检查
    • 解析错误:语法错误,此处意外'=' [$sale_key, $sale_value] = explode('*', $value);
    • 你有一个旧的 php 版本:使用 list($sale_key, $sale_value) = explode('*', $value); 代替。
    • 它现在可以工作了,我的 php 版本不是太旧,它是 7.0 无论如何,谢谢
    • 你是对的 :) PHP 7.1 的short list syntax
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2019-12-07
    • 1970-01-01
    • 2012-01-21
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多