2013-04-30 5 views
1

나는 클라이언트 방문 정보의 배열이있다. 배열은 주문 날짜를 오름차순으로 방문하고있다. 나는 마지막 방문을 얻을 필요가있다. 그러나 그것은 오늘이어서는 안됩니다.날짜를 비교하고 오늘 날짜가 아니어야 마지막 날짜를 얻는 방법

stdClass Object 
    (
     [0] => stdClass Object 
          (
           [ID] => 39334 
           [ClassID] => 3193 
           [StartDateTime] => 2013-04-29T06:00:00 
           [LateCancelled] => 
           [EndDateTime] => 2013-04-29T06:45:00 
          ) 
     [1] => stdClass Object 
          (
           [ID] => 39334 
           [ClassID] => 3193 
           [StartDateTime] => 2013-04-30T06:00:00 
           [LateCancelled] => 
           [EndDateTime] => 2013-04-30T06:45:00 
          ) 
    ) 

여기에 내가 ... 첫 번째를 얻을 수 방문의 숫자가있을 수 있습니다합니다. 나는 단지 두 가지가 있습니다 ...

+0

검색어? 우리가 볼 수 –

+2

이러한 결과를 필터링하는 가장 쉬운 방법은 데이터베이스에서 가져 오는 쿼리에 있습니다. 해당 쿼리를 제공하면 사용자가 원하는 방식으로 필터를 조정할 수 있습니다. 쿼리에서 – Webnet

+0

조건을 추가하십시오. StartDateTime Robert

답변

2
$whatIneed = false; 

foreach($myObj as $obj){ 

    // If this is today object just break, and object from previous loop is what you need 
    if(date('dmY')==date('dmY',strtotime($obj->StartDateTime))) break; 

    // saving object in loop into variable 
    $whatIneed = $obj; 
} 

print_r($whatIneed); 
+0

+1입니다. 설명은 OP를 도울 것입니다 – Waygood

+0

@Waygood 당신 말이 맞아요, 몇 가지 의견을 추가 ... 또한 실수를했습니다 - 개체를 저장하기 전에 휴식이 필요했습니다. 그것을 역시 고쳤다. – Narek

+0

@ Narek +1 완전한 대답입니다. –

0

개체 배열을 정렬하는 함수 또는 메서드를 작성해야합니다. 그것은 예를 들어, 다음 매개 변수로 객체의 배열을받는 또 다른 하나를 만들고, 하나가 하나의 개체를 추가, 먼저해야한다 - ... 다음 두 번째, 다시 최신, 자정부터 시작

0
foreach($obj as $valobj){ 
    // if curentdate is greater than db visit date then insert into array  
    if(strtotime(date('Y-m-d')) > strtotime(date('Y-m-d',$valobj->StartDateTime))){ 
      $arr[] = $valobj; 
    } 

} 

print_r($arr); 
+0

로버트가 말했듯이 우리는 'where visitdate! = curdate()'와 같은 mysql 쿼리를 사용하여 필터링 할 수도 있습니다. –

관련 문제