I am trying to generate the range of days, from 1 to 28
, with the English ordinal suffix for the day of the month. For example: 1st of month
, 2nd of month
…
JavaScript
x
for($i = 1; $i <= 28; $i++)
{
$arrayRange[] = date('dS', strtotime($i));
}
echo "<pre>";
print_r($arrayRange);
echo "</pre>";
Output:
JavaScript
Array
(
[0] => 01st
[1] => 01st
[2] => 01st
[26] => 01st
[27] => 01st
)
What am I doing wrong..?
Advertisement
Answer
Try this, it uses the contextual date functionality of ‘+1 day’ etc to register your integer as a day 🙂
To answer your second question – as in what you’re doing wrong – you’re passing an integer to a function that expects a string.
JavaScript
<?php
for($i = 0; $i <= 27; $i++)
{
//The February is there to keep '1st' a '1st' even on days when it's not
//the '31st'
$arrayRange[] = date('dS', strtotime("1st february +".$i.' day'));
}
echo "<pre>";
print_r($arrayRange);
echo "</pre>";
Output:
JavaScript
Array
(
[0] => 01st
[1] => 02nd
[28] => 28th
)¨
Edit:
To remove the 0s, you can use ltrim() like this:
JavaScript
$arrayRange[$i] = ltrim(date('dS', strtotime("1st february +".$i.' day')), "0");
Which will give you an output like this
JavaScript
[0] => 1st
[1] => 2nd
[28] => 28th
Edit 2: Fixed it. Props to MLF for noticing the mistake.