2017-06-23 18 views
0

MyData内の配列 'c'と 'a'にデータをマージしようとしましたが、結果はまだ破損していました。cakephp2内のfind( 'all')からネストされた配列データをマージできません

私のコードに何か問題がありますか?あるいは、私は配列をどのようにマージするのか簡単に間違っていますか?私は問題を解決するためにあらゆる種類のことをしていますが、うまくいく解決策を見つけることはできません。いくつかの例やヒントは素晴らしいでしょう!

[my_test][my_date][MyData]にマージします。

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 

ようになり、結果をしたいが、マージすることができなかったであろう

$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. 

[更新] cakephp2用のset :: combineという関数について聞いたことがあります。それはcakephp2なのでset :: combineを使う方法はありますか?

答えて

1

あなたは一時的$data配列を作成し、すべてをマージして、あなたが条件を使用している場合、それは空白ので、このように使用する場合、あなたはすべての値を取得することはできません

<?php 

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

     $data['MyData'] = $result[$i]['MyData']; 
     if (!empty($result[$i]['c']) && isset($result[$i]['c']['my_test'])) { 
      $corrupt_c_array = $result[$i]['c']; 
      $data['MyData']['my_test'] = $result[$i]['c']['my_test'];    
     } 
     if(!empty($result[$i]['a']) && isset($result[$i]['a']['my_date'])) { 
      $corrupt_a_array = $result[$i]['a']; 
      $data['MyData']['my_date'] = $result[$i]['a']['my_date']; 
     } 
     $fixed_arrays[] = $data; 

    } 
    $result['data'] = $fixed_arrays; 
+0

$ data ['MyData']に他の$ $データをマージするにはどうすればいいですか? – Tony

+0

変数 '$ data ['MyData'] ['my_test']'と '$ data ['MyData'] ['my_date']'を一時配列に作成し、 '$ fixed_arrays'リストに割り当てます – Sundar

0

$fixed_arraysリストに割り当てることができます。

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

    $data[$i]['MyData'] = $result[$i]['MyData']; 

    $data[$i]['MyData']['my_test'] = $result[$i]['c']['my_test']; 


    $data[$i]['MyData']['my_date'] = $result[$i]['a']['my_date']; 
} 

$result['data'] = $data; 

$データまたは$結果を印刷して、必要に応じて配列を取得してください。

+0

Isそれはcakephp2なのでset :: combineを使う方法はありますか? – Tony

関連する問題