2009-08-20 6 views
1

많은 "이벤트"객체를 배열에 저장해야하는 PHP 프로그램을 작성 중입니다. 각 일정에는 마감일이 있기 때문에 그 날까지 쉽게 이러한 일정을 볼 수 있어야합니다. 특정 날짜에 둘 이상의 이벤트가있을 수 있습니다.PHP로 날짜별로 정렬하여 항목 저장하기

$ array [ "year-month-day"]처럼 MySQL 스타일의 날짜를 키로 사용하려고 생각했지만 지저분합니다. 나는 또한 $ array [year] [month] [day]를 시도했지만, 4d 어레이를 얻었는데, 이것은 또한 나에게 지저분 해 보인다.

내 질문은 다음과 같습니다. 누구나 시간대별로 개체를 저장하는 좋은 방법을 찾았습니까? 그렇다면 어떻게 했습니까?

답변

2

$array['2009-08-20'][0], $array['2009-08-20'][1] 등의 문제는 무엇인가요? 그것은 당신이 표현하고자하는 데이터의 구조를 고려할 때 "지저분 해"보이지 않습니다.

이벤트를 연도 및 월별로 액세스하려는 경우 설명하는 4D 구조가 더 이해하기 쉽지만 (완전히 다른 구조) "하루"가 기본 조직 인 경우 간단한 인간이 읽을 수있는) 배열 색인에 대해 설명한 것처럼 날짜를 묘사합니다.

+0

어느 시점에서 연/월 액세스가 필요할 수 있습니다. 오픈 엔드 솔루션을 찾고 싶습니다. –

+0

또한 4d 배열을 사용한다고 가정 할 때 많은 배열 레벨을 초기화하고 잘못된 키를 피하는 가장 좋은 방법은 무엇입니까? –

1

일 대신 연도를 날짜로 인코딩 하시겠습니까? (즉, 1-365 또는 0-364 (원하는 경우))

strtotime() 또는 기타 등등의 시간 값이있는 경우 값을 반환하는 date('z', $time)을 사용하면 쉽게 요일을 알 수 있습니다 0-365 (윤년의 경우 365).

다음은 $ events [year] [day] [index]와 같은 것을 사용하여 중첩을 한 단계 줄입니다. 정직하게 말하면 중첩은 이동하지 않는 한 "악마"가 아닙니다. 너무 멀리.

0

timestamp을 사용할 수 있습니다. 서명 된 32 비트 정수를 기본 타임 스탬프 유형으로 사용하는 시스템에서는 앱에 year 2038 problem이 표시됩니다.

+0

또는 'timestamp' % 86400, 일별 검색을 용이하게합니다. 그리고 더 나은 해결책을 약 30 년 연기하십시오 ;-) –

+0

'timestamp % 86400'은 시간입니다. – outis

0

유닉스 시간으로 입력 한 배열을 그날 12:00:00에 저장하십시오. 해당 배열에는 해당 날짜의 모든 이벤트가 포함됩니다.

PHP의 strtotime(), time() 및 date() 함수를 사용하면 유닉스 시간과 사람이 읽을 수있는 날짜 사이를 쉽게 변환 할 수 있습니다.

+0

하루의 타임 스탬프를 저장하는 표준화 된 방법은 12:00:00입니까? –

+0

표준 조직에서 승인을 받았는지 여부는 확실하지 않지만 시간은 제로입니다 (군대 시간은 오전 12 시가 00:00:00 임). 저는 종종이 코드를 사용합니다. –

관련 문제