无法在php中合并嵌套数组数据

时间:2017-06-22 10:26:24

标签: php arrays

我尝试将{c'和'a'中的数组中的数据合并到TypeError: fit_transform() takes 2 positional arguments but 3 were given 内但是可能吗?一些示例和提示会有所帮助!我很乐意听到你的消息!

MYDATA

我希望结果像

[0] => Array
    (
        [MYDATA] => Array
            (
                [id] => 79
                [my_birth_day] => 1990-06-20
                [my_address] => 400
                [my_age] => 26
                [my_name] => Joy
                [my_id] => 1
                [created] => 2017-06-19 15:39:44
            )

        [c] => Array
            (
                [my_test] => math
            )

        [a] => Array
            (
                [my_date] => 2017-08-13
            )

    )

2 个答案:

答案 0 :(得分:1)

只需逐个合并元素:

<?php
$input = [
    'MYDATA' => [
        'id' => 79,
        'my_birth_day' => '1990-06-20',
        'my_address' => 400,
        'my_age' => 26,
        'my_name' => 'Joy',
        'my_id' => 1,
        'created' => '2017-06-19 15:39:44'
    ],
    'c' => [
        'my_test' => 'math'
    ],
    'a' => [
        'my_date' => '2017-08-13'
    ]
];
$output = [];
array_walk($input, function($element) use (&$output) {
    $output = array_merge($output, $element);
});
print_r($output);

迭代输入数组的顺序决定了在发生键冲突时哪些条目将获胜。

输出显然是:

Array
(
    [id] => 79
    [my_birth_day] => 1990-06-20
    [my_address] => 400
    [my_age] => 26
    [my_name] => Joy
    [my_id] => 1
    [created] => 2017-06-19 15:39:44
    [my_test] => math
    [my_date] => 2017-08-13
)

答案 1 :(得分:0)

所需的功能是 array_merge(),它需要无限数量的参数,参数的顺序决定了数组合并的顺序,在这种情况下它无关紧要,但是假设您有匹配的密钥,比如两个'my_address'键,定义此键的最后一个数组的值将作为函数调用返回。

请参阅此处的文档:http://php.net/manual/en/function.array-merge.php

合并内部数组,假设您的最外层数组名为 $ array ,您可以尝试以下操作:

<?php 

$array = array(
    'MYDATA' => array(
        'id' => '79',
            'my_birth_day' => '1990-06-20',
            'my_address' => '400',
            'my_age' => '26',
            'my_name' => 'Joy',
            'my_id' => '1',
            'created' => '2017-06-19 15:39:44'
    ),
    'c' => array(
        'my_test' => 'math'
    ),
    'a' => array(
        'my_date' => '2017-08-13'
    )
 );

 $mergedMyData = array_merge($array['MYDATA'], $array['c'], $array['a']);

 //output the data
 print_r($mergedMyData);

 ?>

希望这会有所帮助