这篇文章给大家分享的是有关PHP如何重置多维数组的索引的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
首先我们知道,一维数组想要重置索引,非常简单,直接利用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);
输出结果为:
可以看出,多维数组$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如何重置多维数组的索引”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。