这篇文章给大家分享的是有关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如何重置多维数组的索引”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。