2012-02-18 5 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

우리 모두 전역을 사용하는 것이 나쁜 관행 것을 알고있다. 정렬 배열을 함수에 전달하지 않는 이유는 무엇입니까? –

+0

함수를 호출하는 uksort이며 비교를 위해 2 개의 키만 전달합니다. – piotrm