Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:72543 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 20912 invoked from network); 13 Feb 2014 04:39:44 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 13 Feb 2014 04:39:44 -0000 X-Host-Fingerprint: 72.91.185.17 pool-72-91-185-17.tampfl.fios.verizon.net Received: from [72.91.185.17] ([72.91.185.17:27528] helo=localhost.localdomain) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id BF/50-18732-E8C4CF25 for ; Wed, 12 Feb 2014 23:39:43 -0500 To: internals@lists.php.net,Yasuo Ohgaki Message-ID: <52FC4C8B.1040303@php.net> Date: Wed, 12 Feb 2014 23:39:39 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Posted-By: 72.91.185.17 Subject: Re: [PHP-DEV] [RFC] Combined Comparison Operator From: davey@php.net (Davey Shafik) On 2/12/14, 11:25 PM, Yasuo Ohgaki wrote: > Hi Davey, > > On Thu, Feb 13, 2014 at 12:58 PM, Davey Shafik wrote: > >> I've written up an RFC/Patch to gauge interest and get feedback on the >> addition of a combined comparison (aka: spaceship) operator. >> >> You can see the RFC at: https://wiki.php.net/rfc/ >> combined-comparison-operator >> >> 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. >> >> Code available here (against 5.6): https://github.com/dshafik/ >> php-src/compare/add-spaceship-operator >> >> I'd love to get this into 5.6, not sure if we hit feature freeze yet. >> Also, not sure if it needs 2/3 majority, but assumed so as pow did? >> >> Thoughts? >> >> If there is interest, I'll start adding tests. They should be fairly >> trivial. >> > > Interesting shortcut operator. > I feel closure function is for the task. > I would vote 0, but close to -1 since it's only useful for sorting. > Is there any other use cases? > > Regards, > > -- > Yasuo Ohgaki > yohgaki@ohgaki.net > Yasuo, Sorting is definitely it's most compelling use. It cuts down on potentially quite a bit of code: function ($left, $right) { if ($left[1] == $right[1]) { return 0; } if ($left[1] > $right[1]) { return 1; } if ($left[1] < $right[1]) { return -1; } } or (as per the RFC): function ($left, $right) { return $left[1] <=> $right[1]; }