PHP多维数组简单数组 [英] Php multidimensional array to simple array

查看:130
本文介绍了PHP多维数组简单数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  

可能重复:结果
  <一href=\"http://stackoverflow.com/questions/6785355/convert-multidimensional-array-into-single-array\">Convert多维数组转换成单个阵列


我有这样的数组:

 阵列

    [一] =&GT; one_value
    [二] = GT;排列
        (
            【四】= GT; four_value
            [五] =&GT; five_value
        )    [三] =&GT;排列
        (
            [六] =&GT;排列
                (
                    在[7] =&GT; seven_value
                )        ))

和我想要将其转换为这种类型的数组:

 阵列

    [一] =&GT; one_value
    [2至4] =&GT; four_value
    [二十五] =&GT; five_value
    [三六十七] =&GT; seven_value

我怎样才能做到这一点?有了某种递归的?但是如何? :\\
在此先感谢!


解决方案

 &LT; PHP
$阵列=阵列(
    一=&GT; one_value',
    两节= GT;排列
        (
            四= GT; four_value',
            十二五=&GT; five_value
        )    '三'=&GT;排列
        (
            '六'=&GT;排列
                (
                    七'= GT; seven_value
                )        )
);功能扁平化($数组,$preFIX =''){
    $ ARR =阵列();
    的foreach($数组作为$ K =&GT; $ V){
        如果(is_array($ V)){
            $ ARR = array_merge($ ARR,压平($ V,$preFIX $ K' - '));
        }
        其他{
            $常用3 [$preFIX。 $ K] = $ V;
        }
    }
    返回$ ARR;
}后续代码var_dump(压扁($阵列));//输出:
//阵列(4){
// [一] =&GT;
//串(9)one_value
// [双四] =&GT;
//串(10)four_value
// [双五] =&GT;
//串(10)five_value
// [三六七] =&GT;
//串(11)seven_value
//}

运行例子

Possible Duplicate:
Convert multidimensional array into single array

I have this array:

Array
(
    [one] => one_value
    [two] => Array
        (
            [four] => four_value
            [five] => five_value
        )

    [three] => Array
        (
            [six] => Array
                (
                    [seven] => seven_value
                )

        )

)

And I want to convert it to this type of array:

Array
(
    [one] => one_value
    [two-four] => four_value
    [two-five] => five_value
    [three-six-seven] => seven_value
)

How can I achieve this? With some kind of "recursiveness"? But how? :\ Thanks in advance!

解决方案

<?php
$array = array(
    'one' => 'one_value',
    'two' => array
        (
            'four' => 'four_value',
            'five' => 'five_value'
        ),

    'three' => array
        (
            'six' => array
                (
                    'seven' => 'seven_value'
                )

        )
);

function flatten($array, $prefix = '') {
    $arr = array();
    foreach($array as $k => $v) {
        if(is_array($v)) {
            $arr = array_merge($arr, flatten($v, $prefix . $k . '-'));
        }
        else{
            $arr[$prefix . $k] = $v;
        }
    }
    return $arr;
}

var_dump(flatten($array));

//output:
//array(4) {
//  ["one"]=>
//  string(9) "one_value"
//  ["two-four"]=>
//  string(10) "four_value"
//  ["two-five"]=>
//  string(10) "five_value"
//  ["three-six-seven"]=>
//  string(11) "seven_value"
//}

Running example

这篇关于PHP多维数组简单数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆