1
我從中翻出所有子類別和相關信息數據庫此數據來:如何實現返回嵌套數組的自定義重組函數?
$data = array(
array(
'destination_name' => 'Ohio Resort',
'destination_slug' => 'ohio',
'subcategory_name' => 'Bird Hunting',
'subcategory_slug' => 'bird-hunting',
'category_name' => 'Hunting',
'category_slug' => 'hunting',
),
array(
'destination_name' => 'Ohio Resort',
'destination_slug' => 'ohio',
'subcategory_name' => 'Bear Hunting',
'subcategory_slug' => 'bear-hunting',
'category_name' => 'Hunting',
'category_slug' => 'hunting',
),
array(
'destination_name' => 'Maryland Resort',
'destination_slug' => 'maryland',
'subcategory_name' => 'Bird Hunting',
'subcategory_slug' => 'bird-hunting',
'category_name' => 'Hunting',
'category_slug' => 'hunting',
),
array(
'destination_name' => 'Cali Resort',
'destination_slug' => 'california',
'subcategory_name' => 'Sledding',
'subcategory_slug' => 'sledding',
'category_name' => 'Winter Sports',
'category_slug' => 'winter-sports',
),
);
我生成XML這個問題,但我需要根據我的具體需求來重新排序。比方說,我指定functionCall($data, array('destination', 'category', 'subcategory'));
我希望它返回它以這種形式:
Array(
[california] => array(
[_name] => 'California',
[winter-sports] => array(
'_name' => 'Winter Sports',
[0] => array(
subcategory_name => Sledding,
subcategory_slug => sledding
)
)
),
[maryland] => array(
[_name] => 'Maryland',
[hunting] => array(
'_name' => 'Hunting',
[0] => array(
subcategory_name => Bird Hunting,
subcategory_slug => bird hunting
)
)
),
[ohio] => array(
[_name] => 'Ohio',
[hunting] => array(
'_name' => 'Hunting',
[0] => array(
subcategory_name => Bird Hunting,
subcategory_slug => bird-hunting
),
[1] => array(
subcategory_name => Bear Hunting,
subcategory_slug => bear-hunting
)
)
),
);
如果我指定functionCall($data, array('category', 'subcategory'));
我想它返回:
Array(
[winter-sports] => array(
'_name' => 'Winter Sports',
[0] => array(
subcategory_name => Sledding,
subcategory_slug => sledding
)
),
[hunting] => array(
'_name' => 'Hunting',
[0] => array(
subcategory_name => Bird Hunting,
subcategory_slug => bird hunting
),
[1] => array(
subcategory_name => Bear Hunting,
subcategory_slug => bear-hunting
)
)
);
有人能提供創造一些指針函數將數據作爲第一個參數,並將層次嵌套作爲第二個參數,並以適當的格式返回它?
到目前爲止,我做手工重組:
$data = array();
foreach($categories as $res) {
$destinationSlug = $res['destination_slug'];
$destinationName = $res['destination_name'];
$categorySlug = $res['category_slug'];
$categoryName = $res['category_name'];
if (!in_array($destinationSlug, array_keys($data))) {
$data[ $destinationSlug ] = array();
$data[ $destinationSlug ]['_name'] = $destinationName;
}
if (!in_array($categorySlug, array_keys($data[ $destinationSlug ]))) {
$data[ $destinationSlug ][ $categorySlug ] = array();
$data[ $destinationSlug ][ $categorySlug ]['_name'] = $categoryName;
}
$data[ $destinationSlug ][ $categorySlug ][] = array(
'subcategory_slug' => $res['subcategory_slug'],
'subcategory_name' => $res['subcategory_name'],
);
}
return $data;
散記:
- 數據將始終是這種格式。總會有一個
_slug
和_name
對。 - 我需要有能力字母順序排序結果
我沒有downvote,fyi。 – 2010-08-18 17:43:56
誰做了誰可能不明白我的答案,應該已經評論了背後downvote的原因。不管怎麼說,我認爲你應該實現你自己的功能,。這將是一個更清潔的方法 – 2010-08-18 17:46:49
嗯,我不明白如何uasort()可以解決「大問題」。 – VolkerK 2010-08-18 17:55:07