当前位置 博文首页 > 文章内容

    PHP数组学习之怎么重置多维数组的索引

    作者:shunshunshun18 栏目:未分类 时间:2021-08-28 10:44:36

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    在之前的文章《》中,我们介绍了数组去空去重,即删除数组中的空元素和重复元素的方法,随便简单聊了聊重置一维数组索引的方法。一维数组的索引可以重置,那么二维数组,乃至多维数组的索引要怎么重置?下面我们来介绍一下方法。

    首先从上文我们知道,一维数组想要重置索引,非常简单,直接利用array_values($array)函数就行。

    array_values()函数的作用是返回数组中所有元素的值,使用起来非常简单,只有一个必选参数$array,就可以返回一个包含给定数组中所有值的数组,但不保留键名。被返回的数组将使用索引数组的形式,数组的索引从 0 开始且以 1 递增。

    我们可以利用array_values()函数将元素下标混乱的数组重新理顺,即索引从 0 开始且以 1 递增;该函数不仅可以用于索引数组,也可用于关联数组,能将关联数组转化为索引数组。

    而重置多维数组的索引,也需要利用到这个array_values()函数。下面我们直接给出实现方法:

    function reform_keys($array){
        if(!is_array($array)){
            return $array;
        }
        $keys = implode('', array_keys($array));
        if(is_numeric($keys)){
            $array = array_values($array);
        }
        $array = array_map('reform_keys', $array);
        return $array;
    };

    测试一下,有下面一个多维数组

    $post = [
        0 => [
            'title' => 'xxx联票',
            'price' => 368.00,
            'items' => [
                '33' => [
                    'scenic_id' => 33,
                    'products' => [
                        'goods_id' => 13
                    ]
                ],
                '1500' => [
                    'scenic_id' => 1500,
                    'products' => [
                        'goods_id' => 57
                    ]
                ],
            ],
            'tickets' => 9
        ],
        10 => [
            'title' => 'zzz联票',
            'price' => 500.00,
            'items' => [
                '157' => [
                    'scenic_id' => 157,
                    'products' => [
                        'goods_id' => 77
                    ],
                    'attr' => [
                        '50' => [
                            'item' => '午场'
                        ],
                        '55' => [
                            'item' => '可退'
                        ]
                    ]
                ],
                '19' => [
                    'scenic_id' => 19,
                    'products' => [
                        'goods_id' => 87
                    ]
                ]
            ],
            'tickets' => 3
        ],
    ];

    调用reform_keys()函数重置$post数组的索引,并输出重置后的数组:

    $list = reform_keys($post);
    var_dump($list);

    输出结果为:

    1.png

    可以看出,多维数组$post里面所有层级的索引都被重置,从0开始计数了!

    下面给大家介绍一下里面用的函数:

    • array_keys($array):获取$array数组中所有键名;

    • $keys=implode('', array_keys($array)):将键名数组中的元素拼接在一起,返回一个字符串$keys

    • is_numeric($keys):检测变量$keys是否为数字或数字字符串。

    • array_values($array):获取全部数值,即重置索引;

    • array_map('reform_keys', $array):为$array数组的每个元素应用回调函数reform_keys()。

      array_map() 返回一个 array,数组内容为 array1 的元素按索引顺序为参数调用 callback 后的结果(有更多数组时,还会传入 arrays 的元素)。 callback 函数形参的数量必须匹配 array_map() 实参中数组的数量。

    好了就说到这里了,有其他想知道的,可以点击这个哦。→ →

    最后给大家推荐一个PHP数组的免费视频教程:,快来学习吧!