使用值平移连接键的数组

时间:2014-01-11 04:39:19

标签: php laravel laravel-4

我有这个多维数组:

$array = array(
    'user1' => array('Miguel'),
    'user2' => array('Miguel', 'Borges', 'João'),
    'user3' => array(
        'Sara', 
        'Tiago' => array('Male')
    )
);

我希望它变平,转化为:

$new_array = array(
    'user1.Miguel',
    'user2.Miguel',
    'user2.Borges',
    'user2.João',
    'user3.Sara',
    'user3.Tiago.Male',
);

重要:

  • 钥匙对我来说非常重要。我希望他们连接起来, 以句号分隔。
  • 它应该适用于任何级别的嵌套。

谢谢!

1 个答案:

答案 0 :(得分:3)

虽然在你的问题中没有明确说明,但似乎你需要连接字符串键并忽略整数键(可以用is_string($key)轻松实现)。因为你需要你的代码“使用任何级别的嵌套”,递归函数最适合你的目的:

function array_flatten_key($arr){
$_arr = array();
    foreach($arr as $key => $val){
        if(is_array($val)){
            foreach(array_flatten_key($val) as $_val){
            $_arr[] = is_string($key) ? $key.".".$_val : $_val;
            }
        }
        else{
        $_arr[] = is_string($key) ? $key.".".$val : $val;
        }
    }
return $_arr;
}

$new_array = array_flatten_key($array);
print_r($new_array);

输出将是:

Array
(
    [0] => user1.Miguel
    [1] => user2.Miguel
    [2] => user2.Borges
    [3] => user2.João
    [4] => user3.Sara
    [5] => user3.Tiago.Male
)