我正在尝试重新组织PHP数组(在WordPress页面上)。我的网站是由其他人编码的,我正在努力让事情变得更好。我认为他们以混乱的方式做事(对类别的使用不当)。我不想重新编码整个网站,而是想看看是否有人可以帮我解决问题。
所以,基本上,我在数组中有一个数组。类别列表,每个类别都有具体的详细信息。我根据它的父母调用类别。我需要重新组织列表/类别数组,这样他们就可以按照我需要的顺序打印出来。
$cat_tree = get_category_parents(wt_get_category_ID(), FALSE, ':', TRUE);
$top_cat = split(':',$cat_tree);
$parent = $top_cat[0];
$idObj = get_category_by_slug($parent);
$args = array(
'child_of' => $idObj->term_id,
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => 0);
$counter_c=1;
$categories = get_categories( $args );
if($counter_c == 1) $counter_c = '';
foreach ($categories as $category) {
?>
<div> this is where each category array info gets printed... information goes:<br />
Name: <?=$category->cat_name ?> (<?=$category->cat_ID ?>)
</div>
<?php if($counter_c == '') $counter_c = 1; $counter_c++; } // Reset Query
wp_reset_query();
?>
在一页上,$ cat_tree输出“娱乐:演员:”。
$ parent或$ topcat [0]输出“娱乐”
$ topcat [1]输出“演员”
当“foreach”运行时,我会得到一个按ID分类的列表...
我需要将此列表重新组织为特定的顺序。每个页面都不同。所以我可能不得不为每个页面重新组织一个列表。我可能需要......
所以,我需要一种方法来做到这一点。我想也许我可以在“演员页面”上说“if”,将“Writers”滑到数组的末尾(我知道有一些方法可以做到这一点),然后将Actors滑到最后,然后是DeeJays,然后艺术家,然后是导演。然后运行foreach。
或者,如果页面是其他内容,我可以将其他元素滑动到数组的末尾。这似乎有点多,但这是我能想到的唯一工作。当然,我的PHP知识是有限的,所以任何帮助都表示赞赏。
答案 0 :(得分:1)
您可以尝试自定义排序:
$order = array('Writers', 'Actors', 'DeeJays', 'Artists', 'Directors');
function catsort($a, $b) {
global $order;
$ak = array_search($a->cat_name, $order);
$bk = array_search($b->cat_name, $order);
if($ak === false) $ak = 0;
if($bk === false) $bk = 0;
return $ak - $bk;
}
usort($categories, 'catsort');
每个页面只需要一个不同的订单数组。