Re: [RFC] Combined Comparison Operator

From: Date: Thu, 13 Feb 2014 07:56:11 +0000
Subject: Re: [RFC] Combined Comparison Operator
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-72548@lists.php.net to get a copy of this message
On Thu, Feb 13, 2014 at 3:19 PM, Christian Stoller <stoller@leonex.de>wrote: > Davey Shafik <davey@php.net> wrote: > > This adds a new operator "(expr) <=> (expr)" that returns 0 if both > > operands are equal, 1 if the left is greater, and -1 if the right is > > greater. > > > > It works with all types (just as well as <, <=, >=, > work) and is great > > for usort() callbacks for example. > > > > Why not using $a - $b instead of $a <=> > $b? > This only works on numbers, and integers in particular, because of how the result of a comparison function is cast. For example, 0.4f - 0.5f equals -0.1f but gets cast to 0 when it's converted to a long value. See also: http://lxr.php.net/xref/PHP_5_6/ext/standard/array.c#597 > > Simon J Welsh <simon@simon.geek.nz> wrote: > > The only real case I see for this is to save some boilerplate when > > dealing with arrays. Strings have strcmp(), numbers have subtraction > > And when you're sorting objects, you probably want to be doing > > the comparison on some string/numeric property. > > > > Agreed! It would make more sense to write a comparison function for > arrays/objects. > > > Best regards > Christian > -- -- Tjerk

« previous php.internals (#72548) next »