如何展平这种数组格式?

时间:2017-09-10 01:23:32

标签: php arrays

我正在尝试转换以下数组

Array
(
    [0] => Array
        (
            [535fd7566a10d96c2ac04d2e26e210c4] => Jane Apple
        )

    [1] => Array
        (
            [3cdacd430d6a70acbe4caf9712a76824] => Johnny Apple
        )
...
)

采用以下格式。

    Array
    (
                [535fd7566a10d96c2ac04d2e26e210c4] => Jane Apple,
                [3cdacd430d6a70acbe4caf9712a76824] => Johnny Apple,
...
            )

我尝试过通过堆栈溢出找到的一些不同的功能,谷歌但没有运气。

任何人对如何达到我想要的结果都有任何想法?

谢谢,

3 个答案:

答案 0 :(得分:5)

我相信

array_reduce($array, 'array_merge', [])

应该做的伎俩

基本上你想将一个值数组(每个数组)减少到一个值(一个数组),因此就是array_reduce。并且merge接受一个项目(数组)并将其与另一个数组(在这种情况下为carry)合并,以生成所需的数组。

只是想提供一个非循环的答案; o)

答案 1 :(得分:3)

运行两个foreach循环;一个嵌套在另一个之下;这样你就会得到理想的结果:

  1. 第一个循环将允许您运行原始数组
  2. 第二个foreach会将数组分开,并且"展平"它。
  3. 我们开始吧,

    // setup array
    $array = array (
    
        0 => array(
                '535fd7566a10d96c2ac04d2e26e210c4' => 'Jane Apple'
            ),
    
        1 => array(
                '3cdacd430d6a70acbe4caf9712a76824' => 'Johnny Apple'
            )
        );
    
        // first foreach loop will take original array and loop through it creating a new one
        foreach ($array as $new_array)
        {
            // now loop through the new array and separate it as key value pair; you will now have the desired result
            foreach ($new_array as $key => $val)
            {
                 $user[$key] = $val;
            }
        }
    

    您将获得以下输出:

    Array
    (
        [535fd7566a10d96c2ac04d2e26e210c4] => Jane Apple
        [3cdacd430d6a70acbe4caf9712a76824] => Johnny Apple
    )
    

答案 2 :(得分:1)

你也可以这样做一个循环:

<?php

print_r($arr = [
    ['535fd7566a10d96c2ac04d2e26e210c4' => 'Jane Apple'],
    ['3cdacd430d6a70acbe4caf9712a76824' => 'Johnny Apple']
]);

foreach ($arr as $v) {
    $key = array_keys($v)[0];
    $arr2[$key] = $v[$key];
}

print_r($arr2);

?>