Bug #81398 [Opn]: Comparing int/string with max() always returns string
| From: | php at ober-mail dot de | Date: | Sun, 29 Aug 2021 21:58:00 +0000 |
| Subject: | Bug #81398 [Opn]: Comparing int/string with max() always returns string | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-236162@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81398&edit=1
ID: 81398
User updated by: php at ober-mail dot de
Reported by: php at ober-mail dot de
Summary: Comparing int/string with max() always returns
string
Status: Open
Type: Bug
Package: *Math Functions
Operating System: Debian 10
PHP Version: 8.0.10
Block user comment: N
Private report: N
New Comment:
I'm sorry, of course the "Test script" should be:
<?php
var_dump(max("A", 1));
var_dump(max(1, "A"));
Previous Comments:
------------------------------------------------------------------------
[2021-08-29 21:57:10] php at ober-mail dot de
Description:
------------
The documentation of max() says:
"Values of different types will be compared using the standard comparison rules. For instance,
a non-numeric string will be compared to an int as though it were 0."
Using PHP 8.0 and above, I'm observing a deviating behavior, that is, the string value is
returned instead. Parameter order does not matter. If this is the intended behavior, the
documentation should be updated / the cited snippet should be removed.
Up to PHP 7.4.13, the observed result matches the documentation.
Test script:
---------------
<?php
var_dump(max("A", PHP_INT_MAX));
var_dump(max(PHP_INT_MAX, "A"));
Expected result:
----------------
int(1)
int(1)
Actual result:
--------------
string(1) "A"
string(1) "A"
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81398&edit=1