2015-01-28 6 views
1

데이터 내의 숫자 키 값을 COLUMNS의 해당 값으로 바꾸려고하는 것과 비슷한 데이터 집합이 있습니다. 루프에서이 작업을 수행 할 수 있지만 가능한 가장 효율적인 방법으로 작업하고 있다고 생각하지 않습니다. 아무도 내가 이것을 성취하기 위해 고려하지 않은 멋진 기능을 제안 할 수 있습니까?숫자 배열 키를 배열의 연관 키로 대체하십시오.

기존 스타일

stdClass Object 
(
    [COLUMNS] => Array 
     (
      [0] => MATCHID 
      [1] => SEASON 
      [2] => COMPETITION 
      [3] => ROUNDID 
      [4] => ROUNDSORT 
      [5] => ROUNDNAME 
     ) 

    [DATA] => Array 
     (
      [0] => Array 
       (
        [0] => 141627 
        [1] => 2013/2014 
        [2] => The Scottish Cup 
        [3] => 18 
        [4] => 11 
        [5] => Final 
       ) 

      [1] => Array 
       (
        [0] => 140895 
        [1] => 2013/2014 
        [2] => The Scottish Cup 
        [3] => 16 
        [4] => 10 
        [5] => Semi-Final 
       ) 
     ) 
) 

원하는 스타일

stdClass Object 
(
    [COLUMNS] => Array 
     (
      [0] => MATCHID 
      [1] => SEASON 
      [2] => COMPETITION 
      [3] => ROUNDID 
      [4] => ROUNDSORT 
      [5] => ROUNDNAME 
     ) 

    [DATA] => Array 
     (
      [0] => Array 
       (
        [MATCHID] => 141627 
        [SEASON] => 2013/2014 
        [COMPETITION] => The Scottish Cup 
        [ROUNDID] => 18 
        [ROUNDSORT] => 11 
        [ROUNDNAME] => Final 
       ) 
      [1] => Array 
       (
        [MATCHID] => 140895 
        [SEASON] => 2013/2014 
        [COMPETITION] => The Scottish Cup 
        [ROUNDID] => 16 
        [ROUNDSORT] => 10 
        [ROUNDNAME] => Semi-Final 
       ) 
     ) 
) 

답변

3
foreach ($data->DATA as $key => $array) { 
    $data->DATA[$key] = array_combine($data->COLUMNS, $array); 
} 

$data 당신이 보여 객체입니다.

루프는 데이터 물마루하고, 데이터와 키를 결합 참조 array_combine

2
$data->DATA = array_map(function (array $entry) use ($data) { 
    return array_combine($data->COLUMNS, $entry); 
}, $data->DATA); 
관련 문제