Array comparison works completely different than documented?

From: Date: Wed, 01 Dec 2021 13:56:07 +0000
Subject: Array comparison works completely different than documented?
Groups: php.internals 
Request: Send a blank email to internals+get-116547@lists.php.net to get a copy of this message
The official documentation contains a conceptual description of array comparison in https://www.php.net/manual/en/language.operators.comparison.php#example-113. Curiously the people who wrote the inofficial spec (I think the HHVM team at Facebook?) came to pretty much the same result, described in https://github.com/php/php-langspec/blob/master/spec/10-expressions.md#relat ional-operators: > If both operands have array type, if the arrays have different numbers of elements, the one > with the fewer is considered less-than the other one, regardless of the keys and values in each, > and the comparison ends. For arrays having the same numbers of elements, the keys from the left > operand are considered one by one, if the next key in the left-hand operand exists in the > right-hand operand, the corresponding values are compared. If they are unequal, the array > containing the lesser value is considered less-than the other one, and the comparison ends; > otherwise, the process is repeated with the next element. If the next key in the left-hand > operand does not exist in the right-hand operand, the arrays cannot be compared and FALSE is > returned. If all the values are equal, then the arrays are considered equal. In reality, array comparison works completely different, it is however unclear to me how exactly it does work: https://3v4l.org/630vG Do we know how this happened?

« previous php.internals (#116547) next »