2012-02-18 60 views
0

也许标题并没有多大意义,但我真正想要实现的是使用数组排序值排序的指数数组:排序由索引值与数组给定的顺序

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

我想要实现的是使用$ sortingValues中的排序值对$ categories进行排序。

回答

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

我们都知道,使用全局变量是不好的做法。为什么不将排序数组传递给函数呢? – 2012-02-18 21:54:02

+0

这是uksort调用你的功能,它只通过2个键进行比较。 – piotrm 2012-02-18 22:05:42