Array
(
[1] => 美妆护肤
[2] => 营养保健
[1.1] => 美妆保养
[1.2] => 美容工具
[1.3] => 护肤保养
[1.4] => 美容化妆
[1.5] => 美发护发
[2.1] => 香水须后水
[2.2] => 工具配件
)
有没什么简单的方法能把这个数组转换成多维数组。1.1 1.2 表示 是 1下面的一个数组
很简单,代码如下:
// 假设数组变量$array保存了当前数据foreach ($array as $key $value) { // 遍历数组
// 通过正则表达式来判断是否为诸如1.x的下标
if (!preg_match('/\./', $key)) {
// 删除数组诸如下标为:1,2,3的数据
unset($array[$key]);
continue;
}
// 通过.点来分割诸如1.x的下标
$array2 = explode('.', $key);
// 使用新数组来存储数据
$array3[$array2[0]][$key] = $value;
}
// 如果数组下标在排序上有任何颠倒可用ksort()[正序]或krsort()[倒序]来排序
ksort($array3);
// 打印重组的数组效果如下
print_r($array3);
Array
(
[1] => Array
(
[1.1] => 美妆保养
[1.2] => 美容工具
[1.3] => 护肤保养
[1.4] => 美容化妆
[1.5] => 美发护发
)
[2] => Array
(
[2.1] => 香水须后水
[2.2] => 工具配件
)
)
如果还有任何问题,欢迎追问~
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-06-13
<?php
$arr = array(
'1' => 美妆护肤,
'2' => 营养保健,
'1.1' => 美妆保养,
'1.2' => 美容工具,
'1.3' => 护肤保养,
'1.4' => 美容化妆,
'1.5' => 美发护发,
'2.1' => 香水须后水,
'2.2' => 工具配件,
);
foreach($arr as $key=>$val){
$tmpKey = explode('.',$key);
if($tmpKey[0] == 1){
$arrs[1][$key] = $val;
}else if($tmpKey[0] ==2){
$arrs[2][$key] = $val;
}
}
///输出的
Array
(
[1] => Array
(
[1] => 美妆护肤
[1.1] => 美妆保养
[1.2] => 美容工具
[1.3] => 护肤保养
[1.4] => 美容化妆
[1.5] => 美发护发
)
[2] => Array
(
[2] => 营养保健
[2.1] => 香水须后水
[2.2] => 工具配件
)
)
$arr = array(
'1' => 美妆护肤,
'2' => 营养保健,
'1.1' => 美妆保养,
'1.2' => 美容工具,
'1.3' => 护肤保养,
'1.4' => 美容化妆,
'1.5' => 美发护发,
'2.1' => 香水须后水,
'2.2' => 工具配件,
);
foreach($arr as $key=>$val){
$tmpKey = explode('.',$key);
if($tmpKey[0] == 1){
$arrs[1][$key] = $val;
}else if($tmpKey[0] ==2){
$arrs[2][$key] = $val;
}
}
///输出的
Array
(
[1] => Array
(
[1] => 美妆护肤
[1.1] => 美妆保养
[1.2] => 美容工具
[1.3] => 护肤保养
[1.4] => 美容化妆
[1.5] => 美发护发
)
[2] => Array
(
[2] => 营养保健
[2.1] => 香水须后水
[2.2] => 工具配件
)
)
第2个回答 2013-06-13
遍历数组 得到键 用.分隔字符串 能得到下标为0和1的的数组 然后判断组合
第3个回答 2013-06-13
用键值取到1.1-2.2 在将取到的数组加到[1]下