문자열에서 날짜 배열의 형식을 DateTime으로 변환하는 효율적인 방법이 있습니까?배열을 문자열에서 datetime으로 변환
날짜 형식의 배열과 문자열 형식의 날짜 배열 (예 : "2017-01-01")이 있습니다. "array_intersect"를 사용하여 각 배열의 레코드를 확인해야하지만 둘 다 작동해야하는 DateTime 형식이어야합니다.
문자열에서 날짜 배열의 형식을 DateTime으로 변환하는 효율적인 방법이 있습니까?배열을 문자열에서 datetime으로 변환
날짜 형식의 배열과 문자열 형식의 날짜 배열 (예 : "2017-01-01")이 있습니다. "array_intersect"를 사용하여 각 배열의 레코드를 확인해야하지만 둘 다 작동해야하는 DateTime 형식이어야합니다.
당신은 너무 같은 문자열을 변환 할 수 있습니다 ... 실제로 배열 내의 객체의 문자열 값을 비교 array_intersect
때문에
foreach($dateStrings as $dateString){
$dates[] = DateTime::createFromFormat('Y-m-d', $dateString);
}
이 좋아 보인다 .. ($ myArray, function ($ value) {$ value = new DateTime ($ value);}) .하지만 $ dateStrings 및 $ dateString 및 $ dates는 무엇을 나타 냅니까? –
$ dateStrings는 문자열 형식의 날짜 배열입니다. $ dates는 기존 DateTime 배열과 교차 할 수있는 dateTime 형식 요소의 결과 배열입니다. –
, 나는 다른 방법으로 주위를 변환하는 것입니다 : 날짜 시간에서 문자열에. 다음이 보일 수 :
<?php
// Suppose you have these DateTime objects
$toConvert = [
DateTime::createFromFormat('Y-m-d', '2012-04-22'),
DateTime::createFromFormat('Y-m-d', '2012-05-10'),
DateTime::createFromFormat('Y-m-d', '2013-06-03'),
];
$dateStrings1 = ['2012-04-22', '2012-05-10', '2015-05-05'];
$dateFormat = 'Y-m-d';
// Convert the array of DateTime objects to strings
$dateStrings2 = array_map(function($dateTime) use ($dateFormat) {
return $dateTime->format($dateFormat);
}, $toConvert);
$intersection = array_intersect($dateStrings1, $dateStrings2);
var_dump($intersection);
이것의 출력은 :
array (size=2) 0 => string '2012-04-22' (length=10) 1 => string '2012-05-10' (length=10)
이용하여 array_walk() (http://php.net/manual/en/function.array- 아마도 walk.php)? –
@ MarkBaker ITYM'array_map()'- 더 일반적으로 원래 배열을 돌연변이 화하지 않는 것이 더 좋다. – Alnitak