如何在cakephp2中将数组中的数据与Set::combine合并?

How to merge data in arrays with Set::combine in cakephp2?

我试图用下面的代码合并数组'c'和'a'里面的数据MyData,但是最近发现有一个函数叫做Set::combine.我如何在 CakePHP 2 中使用 combine 方法?我搜索了教程,但找不到真正可以帮助我解决问题的像样的教程。一些例子或提示会很棒!

我想在 [MyData] 中合并 [my_test][my_date] 与 Set::combine。

Array
(
    [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
                )

        ).....Loops

    [1] => Array
        (

我希望结果是这样的:

Array
(
    [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
                    [my_test] => math
                    [my_date] => 2017-08-13

我写了这段代码来合并数组并将其显示为上面的代码,但我想使用 Set::combine $res.

$res = $this->find( 'all', $cond); // All the data are fetchd from this $res
            $count = count($res);
            for($i=0;$i<$count;$i++){
               $result[] =  $res[$i] ;

                $fixed_arrays[] = $result[$i]['MyData'];
                if (!empty($result[$i]['c'])) {
                    $corrupt_c_array = $result[$i]['c'];
                    $fixed_arrays = array_merge($fixed_arrays,$corrupt_c_array);
                }
                if(!empty($result[$i]['a'])) {
                    $corrupt_a_array = $result[$i]['a'];
                    $fixed_arrays = array_merge($fixed_arrays, $corrupt_a_array);
                }
            }
            $result['data'] = $fixed_arrays;  // This $result['data'] should show the expected result.
$result = Set::combine('', '{n}.MyData', '{n}.c', '{n}.a');

希望对你有用。

您无法使用 Set::combine(或 CakePHP 的更高版本中的 Hash::combine)执行您要求的操作。它只是行不通。但是,您可以使用以下方法简化当前正在做的事情:

foreach($yourArray as $key => $data){
    $yourArray[$key] = $data['MyData'] + $data['c'] + $data['a'];
}

这将输出您要查找的内容。

Array (
  [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
      [my_test] => math
      [my_date] => 2017-08-13
    )
  )
)