Re: Proposed RFC
| From: | David Rodrigues | 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