0
두 차원 배열로 변환 나는이 배열이 있습니다다차원 배열
$data=array(
array('id'=>12,'name'=>'box1','color'=>'red','content_id'=>18,'content'=>'roses'),
array('id'=>12,'name'=>'box1','color'=>'red','content_id'=>22,'content'=>'daisies'),
array('id'=>38,'name'=>'box2','color'=>'green','content_id'=>22,'content'=>'daisies'),
);
을 그리고 난이 구조 사용하여 변환 할 :
$structure = array('id'=>
array('name','color','content_id'=>array(
'content')));
그래서이된다을 :
array(
'12'=>array('name'=>'box1','color'=>'red','content_id'=>array(
'18'=>'roses',
'22'=>'daisies')),
'38'=>array('name'=>'box2','color'=>'green','content_id'=>array(
'22'=>'daisies'))
);
단일 $ 데이터 배열 (즉, x_array ($ data [0], $ structure))에 대해 작동하는 함수를 만들었습니다.
나는 그것이 복제 또는 정보를 덮어 쓰지 않고 하나 개 이상의 배열의 정보를 통합 할 때, 다음에 무엇을해야하는지에 붙어 그러나 http://phpfiddle.org/main/code/y3e-wxh:
function x_array($data,$struc,$first=true)
{
foreach ($struc as $struc_field=>$inner_struc)
{
if (!is_array($inner_struc))
{$result[$inner_struc]=$data[$inner_struc];}
else {
$res=x_array($data,$inner_struc,false);
//ignore the first field name and use it's value as key instead
if ($first) {$result[$data[$struc_field]]=$res;}
else {$result[$struc_field][$data[$struc_field]]=$res;}
}
}
return $result;
}
는 그것을 확인합니다. 단순화 된 데이터 및 구조 배열을 게시했음을 유의하십시오. 마지막 함수는 모든 구조체를 깊이 있고 숫자/필드 이름을 관리 할 수 있어야합니다. 도움이 될 것입니다.
코드가 지금 –
감사를 확인하시기 바랍니다 편집. 예, 아마 작동 할 것이지만, 제가 말했듯이, 배열 구조 고유의 함수가 아닌 보편적 인 함수를하려고 노력하고 있습니다. – Borgtex
@Borgtex : Ok cool : D –