php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #67904 Array/object to number/string comparison should be deprecated
Submitted: 2014-08-26 02:48 UTC Modified: 2021-08-26 11:54 UTC
Votes:3
Avg. Score:4.7 ± 0.5
Reproduced:2 of 2 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: john dot wellesz at teaser dot fr Assigned:
Status: Suspended Package: Arrays related
PHP Version: 5.5.16 OS: Debian Wheezy
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please — but make sure to vote on the bug!
Your email address:
MUST BE VALID
Solve the problem:
41 - 7 = ?
Subscribe to this entry?

 
 [2014-08-26 02:48 UTC] 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)

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-09-19 06:59 UTC] 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.
 [2021-08-26 11:54 UTC] cmb@php.net
-Status: Open +Status: Suspended
 [2021-08-26 11:54 UTC] cmb@php.net
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>
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed May 08 18:01:34 2024 UTC