Req #67904 [Opn->Sus]: Array/object to number/string comparison should be deprecated

From: Date: Thu, 26 Aug 2021 11:54:09 +0000
Subject: Req #67904 [Opn->Sus]: Array/object to number/string comparison should be deprecated
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-236079@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=67904&edit=1 ID: 67904 Updated by: cmb@php.net Reported by: john dot wellesz at teaser dot fr Summary: Array/object to number/string comparison should be deprecated -Status: Open +Status: Suspended Type: Feature/Change Request Package: Arrays related Operating System: Debian Wheezy PHP Version: 5.5.16 Block user comment: N Private report: N New Comment: I agree that it would be good if nonsentical comparisons would somehow warn, but the details certainly need to be discussed, and that warrants an RFC. So anybody who is interested in this, please pursue the RFC process[1]. For the time being, I'm suspending this ticket. [1] <https://wiki.php.net/rfc/howto> Previous Comments: ------------------------------------------------------------------------ [2019-09-19 06:59:33] fabien dot villepinte at gmail dot com Hi, I've faced this issue recently. An array was mistakenly compared to an integer and no notice was emitted. I'm not in favor to change the result of a such comparison but raising a notice would be a great help. ------------------------------------------------------------------------ [2014-08-26 02:48:43] john dot wellesz at teaser dot fr Description: ------------ Currently when a an array/object is compared to a number (or string), PHP doesn't issue any E_NOTICE or E_STRICT, the comparison is done and the array/object is always greater (as documented in http://php.net/manual/en/language.operators.comparison.php). I think that this 'feature' is detrimental to PHP and a source of confusion and waiting to happen catastrophes. Reasons: - 99.9% of such comparison are programming mistakes. - There is no reason to expect objects or arrays to be always greater than _any_ number or string. - The fact that no error at all is thrown when such comparison is performed is generally unexpected. So I think that in future versions of PHP it would be nice if at least an E_STRICT was thrown. Test script: --------------- <?php error_reporting(E_ALL | E_STRICT); var_dump([7, 11] > 'foo', [1] > 42); Expected result: ---------------- E_STRICT NULL E_STRICT NULL Actual result: -------------- bool(true) bool(true) ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=67904&edit=1

« previous php.bugs (#236079) next »