Bazı testler çalıştırırken, DateInterval nesnelerindeki genel özelliklerin denetlenmesinin veri içerdiklerinde bile false döndürdüğünü fark ettiler. Neden bu/belgelerden ne eksik?DateInterval properties ve isset()
Örnek:
$currentDate = new DateTime();
$targetDate = new DateTime('2015-03-05 11:11:11');
$interval = $currentDate->diff($targetDate);
var_dump($interval->y);
var_dump($interval->m);
var_dump(isset($interval->y));
var_dump(isset($interval->m));
var_dump($interval);
aşağıdaki çıktıyı verecektir:
int(0)
int(2)
bool(false)
bool(false)
object(DateInterval)#3 (15) {
["y"]=>
int(0)
["m"]=>
int(2)
["d"]=>
int(1)
["h"]=>
int(9)
["i"]=>
int(43)
["s"]=>
int(35)
["weekday"]=>
int(0)
["weekday_behavior"]=>
int(0)
["first_last_day_of"]=>
int(0)
["invert"]=>
int(1)
["days"]=>
int(62)
["special_type"]=>
int(0)
["special_amount"]=>
int(0)
["have_weekday_relative"]=>
int(0)
["have_special_relative"]=>
int(0)
}
Diğerlerini yapmadan önce 'var_dump ($ interval)' yapın. "-> m" nin böyle nasıl "kaybolduğunu" göremiyorum. eğer ayarlanmadıysa, o zaman aralık nesnesini herhangi bir şekilde değiştirmediğiniz için, önceki dökümü için içinde '2' bulunabilecek hiçbir yol olmazdı. –
İstenen var_dump çıktısını biçimlendirmenin uğruna ilk soruyu ekledim (php 5.6) – RumpRanger
Bu hatayı bugün birçok karışıklıktan sonra bulmak için yönetilen ... çılgın şeyler – mickadoo