2010-04-07 15 views
1

나는이의 필드에 의해 배열을 주문하는 몇 가지 문제가있다, 여기 내가 제기 $site->padre가 비어하지만 난 $site->padre 알파벳 주문하고 싶습니다 예를주문 다차원 배열 PHP

foreach($xml as $site){ 
echo '<div><a href="'.$site->loc.'">'.$site->loc.'</a>' .$site->padre.'</div>'; 
} 

일부 시간을두고 나는 usort로 예제를 보았지만 어떻게 작동하는지 이해하지 못한다.

미리 감사드립니다.

건배

답변

1
<?php 

    function alphabetize($a, $b){ 
    # property notation as used in original question 
    return strcmp($a->padre, $b->padre); 
    } 

    $xml = uasort($xml, 'alphabetize'); 
    foreach($xml as $site){ 
    # your code here 
    } 

?> 

다른 방법으로는, PHP의 create_function()

$xml = uasort($xml, create_function('$a,$b', 'return strcmp($a->padre, $b->padre);')); 

를 사용하여 람다 함수를 사용 또는 수 PHP> = 5.3

$xml = uasort($xml, function($a,$b){ return strcmp($a->padre, $b->padre); }); 
3
function cmp($a, $b){ 
    return strcmp($a['padre'], $b['padre']); 
} 

usort($xml, "cmp"); 
foreach($xml as $site){ 
    echo '<div><a href="'.$site->loc.'">'.$site->loc.'</a>' .$site->padre.'</div>'; 
} 

을 CMP 기능은 어레이의 모든 요소에 대해 호출된다. 이 함수는 $ a가 $ b보다 많거나 작거나 같은지를 확인하기 위해 정수를 반환해야합니다. cmp 함수에서 [ 'padre']를 지정하면 해당 요소를 비교합니다. 당신이있는 경우

+0

당신이 인덱스 상관 관계를 유지하고자하는 경우 $ xml 배열은 usort 대신 uasort를 사용합니다. –