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'))
);
我創建了一個適用於單個$ data數組(即x_array($ data [0],$ structure))的函數:
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;
}
在檢查:http://phpfiddle.org/main/code/y3e-wxh
但是我卡在下一步該怎麼做,當談到沒有複製或覆蓋一個以上信息陣列的信息集成。請注意,我發佈了一個簡化的數據和結構數組,最終的功能應該能夠管理任何深層結構和任何數量/名稱的字段。 任何幫助,將不勝感激。
編輯代碼,請現在 – 2013-03-04 12:09:42
謝謝你檢查一下。是的,這可能會起作用,但是,正如我所說的,我試圖做一個通用的功能,而不是一個特定的陣列結構 – Borgtex 2013-03-04 12:24:41
@Borgtex:好的很酷:D – 2013-03-04 12:27:03