Le comte d'itérations de PHP DatePeriod()
Je comprends à quel date œuvres de cette période, à une exception près, est-il un moyen de savoir à partir de la date de la période nombre d'intervalle il y a?
Ainsi, par exemple:
//define the period of the range
$period = new DatePeriod($begin, $rangeType, $end);
//iterate through the dates in range
foreach ( $period as $dt ) {
}
C'est ce que j'aimerais faire partir le code ci-dessus:
echo count($period);
Fondamentalement, je veux savoir combien de temps le foreach
boucle sera la fin de la course à pied.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
iterator_count
fonction de cela:iterator_count
à l'interne effectue une itération sur tous les articles de les compter. Donc, si la période est grande et vous parcourir de toute façon avec foreach vous pouvez faire le comptage de vous-même, ce qui serait beaucoup plus efficace.En supposant que vous êtes intéressé à compter le nombre de jours seulement (quel que soit l'intervalle spec) - thx @marc-amery pour s'élever!
Un autre plus évident approche serait de diff les 2 dates et obtenir le nombre de jours à partir du résultat.
Assurez-vous de valider votre OBTENIR vars à éviter date d'avertissements /erreurs.
Mieux vaut tard que jamais 😉
EDIT:
Si vous disposez d'une période d'objet que vous avez accès à de début et de fin de la période.
DatePeriod
a 1 jourDateInterval
, qui n'a pas besoin d'être le cas.Countable
interface au lieu de sur-de compliquer les choses comme ça. Mais de toute façon, l'extension de DatePeriod est une mauvaise pratique.iterator_count
etiterator_to_array
bien faire le travail.DatePeriod
s'itérations ne peut pas être compté) tout pour produire une finale de la syntaxecount($p->toArray())
- c'est plus compliqué et pas plus performant que leiterator_count($p)
que la langue vous donne déjà.