# PHP 1st, 2nd, 3rd, 4th, 5th, 6th – PHP Add Ordinal Number Suffix - Comment Page: 1

This is simple function to add English ordinal number suffix after normal number. Function takes number as a parameter and returns number with suffix, like: 1st, 2nd, 3rd, 4th, 5th, 6th... [inttf_post_ad1] This is example table of ordinal numbers 1 to 100 1st 2nd 3rd 4th 5th 6th 7th 8th 9th ...

## 26 comments on “PHP 1st, 2nd, 3rd, 4th, 5th, 6th – PHP Add Ordinal Number Suffix - Comment Page: 1”

1 2

• Hi Lucy,

So could you tell more specific, what are you doing, if this is too complicated?

2. work perfectly! thanx!

3. lately i am seeing 1st , 2nd, 3rd, being written as 1th, 2th, 3th
Can anyone explain the concept behind this?

4. You guys are great! Keep it up! =))

5. Thanks. good explanation.

6. Thank you! You saved me some brain cells!

7. Thanks for this function..

8. Simple it is not, when it doesn’t provide a echo result!!!!

we have a \$num = 26

the result is =

exactly

I think karen had a POINT – a simple solution to a simple problem, one that works.

so what is the answer for 26 = 26st or or 26nd or 26rd or 26th

exactly karen’s point.

• Hi Clive,

Just tested and this function returns 26th as it should return…could you post your code?

If you try/run exactly following code:

``````
< ?php

if (!in_array((\$num % 100),array(11,12,13))){
switch (\$num % 10) {
// Handle 1st, 2nd, 3rd
case 1:  return \$num.'st';
case 2:  return \$num.'nd';
case 3:  return \$num.'rd';
}
}
return \$num.'th';
}

``````

9. OK I am not joking either ===

Server error
The website encountered an error while retrieving http://polishpotterymanufaktura.co.uk/assets/TimeLine_HISTORY/test26.php. It may be down for maintenance or configured incorrectly.

http://polishpotterymanufaktura.co.uk/assets/TimeLine_HISTORY/test26.php

<?php

if (!in_array((\$num % 100),array(11,12,13))){
switch (\$num % 10) {
// Handle 1st, 2nd, 3rd
case 1: return \$num.'st';
case 2: return \$num.'nd';
case 3: return \$num.'rd';
}
}
return \$num.'th';
}

?>

NOTE:: I added ?> also removed pre php at the head, but still SERVER ERROR!

Clive Moore

• What shows your access.log and error.log?

Could you add example following code on same location to another file:

``````
< ?php

phpinfo();

?>
``````

Is it working?

And if you have just mine code on this test26.php file, then you could simply login your server and run following command:

``````
## Replace following path with your real path ##
php /your/www/path/assets/TimeLine_HISTORY/test26.php
``````

What is output?

10. Can you tell me how to use it in my case? how would I call the addOrdinalNumberSuffix and apply it to \$query_data[4]? column 4 is filled with days 1 to 31

and yes I know my php skills suck..

<?php
mysql_connect("localhost", "user", "pass") or die (mysql_error ());
mysql_select_db("intranetbday") or die(mysql_error());

if (!in_array((\$num % 100),array(11,12,13))){
switch (\$num % 10) {
// Handle 1st, 2nd, 3rd
case 1: return \$num.'ste';
case 2: return \$num.'nd';
case 3: return \$num.'rd';
}
}
return \$num.'de';
}

\$result = mysql_query("SELECT * FROM verjaarsdae WHERE WEEK( BD ) = WEEK( NOW() +1 ) LIMIT 0, 30 ");
\$personeelWatVerjaar = mysql_num_rows(\$result);
echo "”;
echo “”,””,”Die week se verjaarsdae”,””,”” ;
for(\$i=0;\$i<\$personeelWatVerjaar;\$i++)
{

\$query_data = mysql_fetch_row(\$result);

echo "”,””, \$query_data[4], “”,””,”“,\$query_data[1],”“, “”,””,\$query_data[3], “”, “”;

}
echo “”;
?>

• Hi Jankoos,

So just pass that \$query_data[4] to addOrdinalNumberSuffix function, like:

``````
echo "This is query_data[4] value, with ordinal number suffix: " . addOrdinalNumberSuffix(\$query_data[4]);
``````

Few other notes, mysql funtions are deprecated on PHP 5.5, so it’s better use PDO or at least mysqli instead mysql and more elegant way to do this loop is example following:

``````
\$result = mysql_query("SELECT field1, field2, field3 FROM verjaarsdae WHERE WEEK( BD ) = WEEK( NOW() +1 ) LIMIT 0, 30 ");

while (\$row = mysql_fetch_assoc(\$result)) {
echo \$row["field1"];
echo \$row["field2"];
echo \$row["field3"];
}
``````

Replace field1, field2, fiedl3…with your real field names or if you want really use numeric array, then use mysql_fetch_array instead mysql_fetch_assoc, but this is little bit risky, if you change your mysql table, then numeric array might be different.

11. This function worked well for me. Thanks.