- 被转化的数组可多维,数组元素可为对象。但建议不要数组维度不要太多,因为简单的递归效率不是很高。
- mulArray和test方法都在同一个class中,$one为class的属性
一、形式①,将数组每层的键拼接的情况
1.代码
public function mulArray($array,$pre='')
{
foreach ($array as $key=>$value) {
if (is_object($value)) {
$value = json_decode(json_encode($value),true);
}
if(is_array($value)) {
if ($pre != '') {
$this->mulArray($value,$pre.'.'.$key);
} else {
$this->mulArray($value, $key);
}
} else {
if ($pre != '') {
$this->one[$pre . '.' . $key] = $value;
} else {
$this->one[$key] = $value;
}
}
}
return $this->one;
}
2.测试
public function test()
{
$a = ['a'=>'aa','b'=>['c'=>'cc','d'=>['e'=>'ee']]];
$new = $this->mulArray($a);
echo '<pre>';
print_r($new);
echo '</pre>';
}
3.输出如下:
Array
(
[a] => aa
[b.c] => cc
[b.d.e] => ee
)
二、形式②,单纯转化为一维数组
1.代码
public function mulArray($array)
{
foreach ($array as $key=>$value) {
if (is_object($value)) {
$value = json_decode(json_encode($value),true);
}
if(is_array($value)) {
$this->mulArray($value);
} else {
$this->one[$key] = $value;
}
}
}
2.测试
public function test()
{
$a =array(
'a'=>'aa',
'b'=>array(
'c'=>'cc',
'd'=>array('e'=>'ee'),
),
);
$new = $this->mulArray($a);
echo '<pre>';
print_r($new);
echo '</pre>';
}
3.输出如下:
Array
(
[a] => aa
[c] => cc
[e] => ee
)