hash :: combine数组

时间:2016-06-03 13:24:09

标签: cakephp cakephp-2.3

我有一个来自sql查询的数组:

   [0] => Array
    (
        [T1] => Array
            (
                [First] => A
                [Second] => Apples
                [LastChild] => F
            )

        [0] => Array
            (
                [LastChildNb] => 23
            )

    )

我想得到这样的结果:

   [0] => Array
    (
        [0] => Array
            (
                [First] => A
                [Second] => Apples
                [LastChild] => F
                [LastChildNb] => 23
            )

    )

我该怎么做?我想我应该使用“hash :: combine”,但代码是什么?

2 个答案:

答案 0 :(得分:0)

你可以这样做,$ arr就是你上面的数组:

$arr = array_reduce($arr, function(&$arr, $v) {
                        return array_merge($arr, (array) $v);
                    }, array());

答案 1 :(得分:0)

你可以做到

array_merge($arr[0]['T1'], $arr[0][0])

其中$ arr的定义如下:

$arr = [0 => Array
(
    'T1' => Array
        (
            'First' => 'A',
            'Second' => 'Apples',
            'LastChild' => 'F'
        ),
    0 => Array
        (
            'LastChildNb' => 23
        )

)];

对于$ arr中的多个记录,您可以简单地循环所有记录并手动合并。

但是,假设您是通过find()方法获取数组,我建议您考虑使用T1__LastChildNb作为条件“字段”中的别名。简单地说,如果你有一个如下的发现:

$this->T1->find('all', ['fields' => 'T1.*, (SOME SUBQUERY) AS LastChildNb']);

然后将其修改为

$this->T1->find('all', ['fields' => 'T1.*, (SOME SUBQUERY) AS T1__LastChildNb']);

可能是您正在寻找的东西,因为它将直接返回所需的数组(在2.6上测试)。

如果您对更多信息感兴趣,请与我们联系。