2011-09-28 7 views
1

웹 사이트를 통해 검색해도 내 질문에 대한 정확한 결과를 찾을 수 없습니다.PHP를 사용하여 xpath를 정렬하는 방법

xml 파일을 검색하고 날짜 내림차순으로 출력을 정렬해야합니다. 여기

<?xml version="1.0"?> 
<entries> 
    <entry> 
    <date>1299565881</date> 
    <action>made an action under category</action> 
    <user>Admin</user> 
    </entry> 
    <entry> 
    <date>1299566115</date> 
    <action>Item deleted</action> 
    <user>Admin</user> 
    </entry> 
</entries> 

는별로 정렬하는 기능을 정렬 PHP의 배열을 사용할 수 있습니다, 내 코드 일치하는 entry 요소의 배열 될 것입니다 $op 때문에 사전에

<?php 

$data = simplexml_load_file($filename); 

if($to_date_int>$global_date) 
    $op = $data->xpath('/entries/entry[date<='.$to_date_int.']'); 
else 
    $op = $data->xpath('/entries/entry'); 

감사합니다 ..

+0

당신이 기대하는 출력의 어떤 종류의? 각 항목을 날짜순으로 정렬하려면 어떻게해야합니까? –

+0

XPath는 XSLT를 사용하여 사전 정렬하거나 PHP를 사용하여 정렬 할 수있는 좋은 도구가 아닙니다. – salathe

답변

1

그들의 연결된 date 요소

function sort_entries_by_date($a, $b) { 
    return (int) $b->date - (int) $a->date; 
} 
usort($op, 'sort_entries_by_date'); 

(당신이 PHP 5.3을 사용하는 경우 명명 된 함수는 인라인 익명 함수에 의해 배치 될 수있다.)

+0

잘 작동합니다. 감사합니다. 함수가 실제로 어떻게 작동하는지 설명 할 수 있습니까? 줄의 내용 return (int) $ b-> date - (int) $ a-> date; 다시 한번 감사드립니다. – vijay

+0

정렬 함수는 값이 동일하면 '0'을 반환하고, 정렬 된 배열에서 '$ a'가 '$ b'보다 낮게 표시되면 '미만'이거나 그렇지 않으면 '0보다 큼'을 반환해야합니다. ('$ a'는'$ b'보다 높게 나타납니다). 따라서 함수는 날짜 순서를 내림차순으로 항목을 정렬합니다 ('$ a '의 날짜가'$ b'의 날짜보다 크면 함수는 음수를 반환합니다). 어쩌면 이상한'(int) $ b-> date' 구문에 관해서는''에 속한' '요소의 정수 값을'$ b'에서 가져 오는 것입니다. – salathe

관련 문제