Durante l'esecuzione di alcuni test e notato che il controllo delle proprietà pubbliche sugli oggetti DateInterval restituisce false anche se contengono dati. Perché questo/cosa ci manca dalla documentazione?DateInterval properties e isset()
Esempio:
$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);
darà il seguente output:
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)
}
fare un 'var_dump ($ interval)' prima di fare gli altri. Non riesco a vedere come '-> m' potrebbe semplicemente" svanire "in quel modo. se non fosse stato impostato, allora non ci sarebbe stato modo di avere "2" in esso per il precedente dump, specialmente visto che non stai modificando l'oggetto intervallo in alcun modo. –
Ho aggiunto l'output var_dump richiesto alla domanda iniziale per la formattazione (php 5.6) – RumpRanger
Gestito per trovare questo errore dopo un sacco di confusione oggi .. roba pazzesca – mickadoo