Re: Proposed RFC

From: Date: Thu, 03 Nov 2016 16:03:40 +0000
Subject: Re: Proposed RFC
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-96723@lists.php.net to get a copy of this message
> Yes I have but I would like it to return ($n1/$n2) or whatever this input is, without repeating > it again. But it should do exactly that, except for a falsy return (eg. zero, empty, null, false) - note INFINITY is a truth value, so 10/0, for instance, will return INF instead of "else value". For instance: $n1 = 10; $n2 = 5; echo ( $n1 / $n2 ) ?: 'ELSE VALUE'; // Will returns 2 $n1 = 0; $n2 = 5; echo "\n"; echo ( $n1 / $n2 ) ?: 'ELSE VALUE'; // Will returns ELSE VALUE 2016-11-03 13:56 GMT-02:00 Antony D'Andrea <contactme@antonydandrea.com>: > Hi, > > Yes I have but I would like it to return ($n1/$n2) or whatever this input is, without repeating > it again. > ________________________________________ > From: David Rodrigues [david.proweb@gmail.com] > Sent: 03 November 2016 15:48 > To: Antony D'Andrea > Cc: internals@lists.php.net > Subject: Re: [PHP-DEV] Proposed RFC > > You have tried the ?: operator? > > echo !is_infinite($n1/$n2) ?: 0; > > It should returns true or 0, for this case. > > 2016-11-03 13:02 GMT-02:00 Antony D'Andrea <contactme@antonydandrea.com>: >> Hi all, >> >> First off, this is my first time e-mailing internals or even thinking about submitting RFC. >> Please forgive me if I fail to follow some kind of convention. >> >> In PHP 7.0, we were given the Null Coalesce operator. For example: >> >> echo $array['key']??"key is not set" >> >> would be the same as: >> >> echo (isset($array['key'])?$array['key']:"key is not >> set" >> >> This is a great feature, that makes code much cleaner. >> >> This works on the principle that "$array['key']" is "NULL". >> >> I would like to propose a new feature that is as clean as this but is a slightly different >> use case. This would require a new operator (up for discussion, but an early idea is "?!") >> For example: >> >> echo (!is_infinite($n1/$n2)?!0); >> >> Would output ($n1/$n2) if it is "true" and 0 if false. >> >> Right now, the closest we have to this is ?: operator. The problem with this is that it >> could get very messy as you still have to do: >> >> echo (!is_infinite($n1/$n2)?$n1/$n2:0); >> >> I have obviously over simplified the example. You wouldn't have a big problem in this >> case, but if the subject of the function is much longer, it can become complicated very quickly. >> >> Alternatively, a perhaps more general feature would be to just have the same functionality >> as the Null Coalesce, but with true/false rather than Null/Not Null. >> >> Please let me know if there is something in these ideas or anyway to improve them. I should >> also note that I would need a volunteer to implement this as my "C" skills are >> non-existent and I wouldn't have the confidence to delve into the the PHP source. >> >> Thanks for your time. >> >> Best, >> >> Antony D'Andrea > > > > -- > David Rodrigues -- David Rodrigues

« previous php.internals (#96723) next »