2017-01-09 5 views
-1

그냥 cakePhp의 function query()를 사용합니다. 쿼리가 같은 배열 뭔가를 반환합니다 내가 배열 배열을 병합합니다 같은 cate.date 할 수 있는지 확인하려면 지금여러 차원 배열을 병합하는 방법 cakephp

array(
    (int) 0 => array(
     'cate' => array(
      'date' => '2016-12-05', 
     ), 
     'cate_detail' => array(
      'rel_data_category' => '11' 
     ), 
     'cate_item' => array(
      'price' => '150.000' 
     ) 
    ), 
    (int) 1 => array(
     'cate' => array(
      'date' => '2016-12-05', 
     ), 
     'cate_detail' => array(
      'rel_data_category' => '10' 
     ), 
     'cate_item' => array(
      'price' => '250.000' 
     ) 
    ), 
    (int) 2 => array(
     'cate' => array(
      'date' => '2016-12-06', 
     ), 
     'cate_detail' => array(
      'rel_data_category' => '10' 
     ), 
     'cate_item' => array(
      'price' => '250.000' 
     ) 
    ) 
) 

을 (이 경우 내 배열의 요소 0,1)입니다. 다음과 같이 출력하십시오 :

array(
    (int) 0 => array(
     'cate' => array(
      'date' => '2016-12-05', 
     ), 
     'cate_detail' => array(
      (int) 0 => array (
       'rel_data_category' => '11', 
       'price' => '150.000' 
      ), 
      (int) 1 => array(
       'rel_data_category' => '10', 
       'price' => '250.000' 
      ) 
     ) 
    ), 
    (int) 1 => array(
     'cate' => array(
      'date' => '2016-12-06', 
     ), 
     'cate_detail' => array(
      (int) 0 => array (
       'rel_data_category' => '10' 
       'price' => '250.000' 
      ) 
     ) 
    ) 
) 

도와주세요!

+2

'cate_total'? 이 색인이 원하는 출력으로 갑자기 오는 곳에서? 그것은 당신의 의견이 아닙니다. 또한 원하는 출력은 오해의 여지가있는 견적 확인과 ractify를 가지고있다 –

+0

그래, 나는 나의 지위를 편집 할 것이다! –

답변

2

결과를 반복하고 원하는 형식의 데이터로 새 배열을 작성해야합니다. CakePHP Hash::extract() method을 사용하여 날짜를 인덱스에 맵핑하면 날짜에 대한 데이터를 결합 할 수 있습니다. 예를 들어

: -

// Get out all the dates available and then flip the array so that we have a map of dates to indexes 
$dates = Hash::extract($results, '{n}.cate.date'); 
$datesMap = array_flip($dates); 
// Define an empty array that we will store the new merged data in 
$data = []; 
// Loop through the query results and write to the $data array using the map of dates 
foreach ($results as $result) { 
    $key = $datesMap[$result['cate']['date']]; 
    $data[$key]['cate'] = $result['cate']; 
    $data[$key]['cate_detail'][] = [ 
     'rel_data_category' => $result['cate_detail']['rel_data_category'], 
     'price' => $result['cate_item']['price'] 
    ]; 
} 
+0

또한 배열에'item.code'가 있고'if (item.code && cate.date)에 같은 값이 있는지 '를 체크하고 싶습니다. 한 번 검사 할 수있는 방법이 있나요 @ drmonkeyninja –

+0

@longhoangvan 어떻게 보이는지 알고 싶지 않지만 위의 예제 코드를 사용하여 if 문을 사용하여 상황을 처리 할 수 ​​있어야합니다. – drmonkeyninja