나는 그것이 내가 문제는이 같은 재귀를 사용하여 일반적으로 달성 할 수 있다고 생각이재귀 함수는 PHP
$expected = array (
804023 =>
array (
'RA1234' =>
array (
0 => 'PI',
1 => 'PM',
),
'A90123' =>
array (
0 => 'PI',
),
'A20022' =>
array (
0 => 'CI',
),
),
)
처럼 보이게하기 위해 필요한이
$dataArray = array (
0 =>
array (
'UserId' => '804023',
'ProjectCode' => 'RA1234',
'Role' => 'PI',
),
1 =>
array (
'UserId' => '804023',
'ProjectCode' => 'RA1234',
'Role' => 'PM',
),
2 =>
array (
'UserId' => '804023',
'ProjectCode' => 'A90123',
'Role' => 'CI',
),
3 =>
array (
'UserId' => '804023',
'ProjectCode' => 'A20022',
'Role' => 'PM',
),
)
과 같은 배열이 시나리오는 한 I 많은 시간에 걸쳐 나타납니다.
나는 중첩 된 배열 키를 구성하는 키의 배열에서 이것을 멀리 통과했습니다.
$keys=array("UserId","projectCode","Role");
어디에서 포인터를 가져올 지 모르겠습니까?
public function structureData(array $data, array $keys)
{
//$structuredData = array();
foreach ($data as $key => $value)
{
$keyForData = array_slice($keys,0,1);
$remainingKeys = $keys;
array_shift($remainingKeys);
if (!array_key_exists($value[$keyForData[0]], $structuredData))
{
$count=count($remainingKeys);
$structuredData[$value[$keyForData[0]]] =array();
// this returns as expected array(804023 =>array()); but subsequent recursive calls with the remaining data fail
}
}
return $structuredData);
}
이것은 재귀와 관련이없는 것 같습니다. 다른 접근 방식을 시도해보십시오. – muhmuhten