2012-03-07 35 views
0

PHP配列(WordPressページ上)を再構成しようとしています。私のサイトは他の誰かによってコード化されており、私は物事をより良くしようとしています。私は彼らが混乱するようなことをしたと思う(カテゴリーの貧弱な使用)。サイト全体を再コード化するのではなく、誰かが修正を手助けできるかどうかを見たいと思っていました。複雑なPHP配列をソートする方法

したがって、基本的には配列内に配列があります。カテゴリのリスト、および各カテゴリには特定の詳細があります。私は、その親に基づいてカテゴリを呼び出しています。カテゴリのリスト/配列を再編成する必要があるので、必要な順序で印刷することができます。

$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(); 
?> 

1ページで、$ cat_treeは "entertainment:actors:"を出力します。

$親または$ TOPCAT [0] "エンターテインメント"

の$ TOPCATを[1]に出力する出力 "俳優"

"foreachのは、" 実行すると、私はID順にソートされたリストを取得します。.. 。

  • 俳優(13)
  • アーティスト(14)
  • 取締役(25)
  • ライター(26)
  • のディージェイ(35)

私は特定の順序にこのリストを再編成する必要があります。各ページは異なります。だから私は、各ページごとにリストを別々に再編成しなければならないかもしれない。私は...

  • ライター(26)
  • 俳優(13)
  • ディージェイ(35)
  • アーティスト(14)
  • 取締役(25)

を必要とするかもしれませんだから、私はこれを行う方法が必要です。私はおそらく私は "俳優のページ"の "if"と言うことができ、配列の最後に "Writers"をスライドさせて(私はこれを行う方法があると知っています)、そしてActorを最後に、次にDeeJaysをアーティスト、その後は取締役。その後、foreachを実行します。

ページが他のものであれば、配列の最後に他の要素をスライドできます。それはちょっとのようですが、それは私が考えることができる唯一の仕事です。もちろん、私のPHPの知識は限られているので、どんな助けもありがとうございます。

+1

サンプル入力配列とクリアソートルールのリストはどうですか? – Josh

+0

IDでアルファベット順や数値順に並べ替えるようなことはしないので(私の2番目の例のように)、PHPが助けることができることはあまりありません。私のカスタムソートのような音... – enygma

答えて

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'); 

は、各ページには、異なる順序の配列を必要とするだけでしょう。

関連する問題