2012-02-18 21 views
0

とインデックス値で配列をソートすることはおそらくタイトルはあまり意味がありませんでしたが、私が実際に達成したいことはソート値を持つ配列を使用して、そのインデックスで配列をソートすることです:与えられた順序

$sortingValues = array(
    'category-1', 
    'category-2', 
    ... 
    'category-9', 
); 
$categories['category-1'][] = $article; 
$categories['category-2'][] = $article; 
... 
$categories['category-9'][] = $article; 

私が達成したいのは、$ sortingValuesのソート値で$カテゴリをソートすることです。

答えて

1
$sortingValues = array('category-1', 'category-4', 'category-2', 'category-9'); 
$categories = array('category-1' => 'cat1', 'category-2' =>'cat2', 'category-4' => 'cat4', 'category-9'=>'cat9'); 

// 

foreach($sortingValues as $cat) { 
    if(array_key_exists($cat, $categories)) { 
    print $categories[$cat] . "\n"; 
    } 
} 
0
function cmp_sortingValues($a, $b) { 
    global $sortingValues; 
    if($a == $b) return 0; 
    $apos = array_search($a, $sortingValues); 
    $bpos = array_search($b, $sortingValues); 
    return ($apos>$bpos) ? 1 : -1; 
} 

uksort($categories, "cmp_sortingValues"); 
+0

我々は、すべてのグローバル変数を使用して悪い習慣であることを知っています。なぜソート配列を関数に渡さないのでしょうか? –

+0

あなたの関数を呼び出すのはuksortで、比較のために2つのキーしか渡しません。 – piotrm

関連する問題