PHP多维数组转简单数组

标签 php arrays

Possible Duplicate:
Convert multidimensional array into single array

我有这个数组:

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

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

        )

)

我想将它转换为这种类型的数组:

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

我怎样才能实现这个目标?具有某种“递归性”?但如何呢? :\ 提前致谢!

最佳答案

<?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多维数组转简单数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9416661/

相关文章:

php - jquery每个json变量的bug

计算数组大小

PHP从具有范围的字符串中获取数字数组

php合并2个数组,1个二维数组和1个一维数组

php - 将子主题 css 添加到 <head>

php - Laravel 为每列排序?

php - 应用程序如何可能对已删除且不存在的函数抛出重新声明错误?

php - 从 Goutte 访问 Guzzle Response

ios - 下标使用不明确?

javascript - 标记已预订/保留的时间段