2013-10-20 4 views
0

xml (rss)에서 json으로 변환 된 뉴스 항목의 목록을 정렬하려고합니다. 피드를 결합한 후에 날짜순으로 정렬하고 싶습니다. 그러나이를 달성하는 가장 좋은 방법은 확실하지 않습니다.json 배열을 PHP로 날짜별로 정렬 하시겠습니까?

{ "success":true, 
"message":"", 
"data":{ 
"title":"Feed Name", 
"item":[{ 
"title":"test", 
"pubdate":"Sun, 20 Oct 2013 21:36:42 GMT"}] 
} 
} 
+0

특히 스택을 검색 할 때 * 우리 코드 요구 사항의 90 % -95 %에 대한 답을 얻을 수 있습니다. – brasofilo

+0

지금까지 입력 해 주셔서 감사합니다. 나는 usort를 사용할 필요가 있음을 알고 있지만,이 배열에 깊이 중첩 된 항목으로 어떻게 달성 할 수 있을지는 확신 할 수 없다. – JamieB

답변

3

는 PHP에서 수행하려면, 먼저 PHP 배열로 디코딩 것 :

JSON 응답의 모양으로 위의 데이터를 이제

$data = json_decode($yourJsonVariable, true); 

, 즉 가는 당신 같은 보이는 배열주고 : 당신이 그렇게 할 방법을 그래서를 사용

array(
    'success' => true, 
    'data' => array(
    'title' => 'Feed Name', 
    'item' => array(
     0 => array(
     'title' => 'test', 
     'pubdate' => 'Sun, 20 Oct 2013 21:36:42 GMT' 
     ) 
    ) 
    ) 
) 

을, 당신은 알아낼 수 rting 기능을 작동합니다. 그러나 명확하지 않은 점은 item 배열의 요소 만 정렬하려는 경우 또는 좀 더 복잡한 정렬을 수행하려는 경우 ("피드가 결합 될 때"를 언급했기 때문에)입니다.

정렬 만 item 배열은 각 요소가 자신의 두 요소, 하나의 이름 title 다른 이름 pubdate 그냥 배열입니다 매우 간단한 작업, 사인이다. 당신은 전체 배열 또는 그것의 다른 부분을 정렬해야하는 경우

usort($data['data']['item'], function($a, $b) { 
    return (strtotime($a['pubdate']) < strtotime($b['pubdate']) -1 : 1); 
}); 

, 당신은 그렇게 할 해당 기능을 적용 할 수 있어야한다 :이 경우 귀하의 정렬 기능이 같이 보입니다.

+0

대규모 감사합니다. 여러 피드를 정렬해야하지만 이것은 좋은 출발점입니다. 감사! – JamieB