Re: [DISCUSSION] Make empty() a Variadic
| From: | reeze | Date: | Fri, 13 Feb 2015 11:38:11 +0000 |
| Subject: | Re: [DISCUSSION] Make empty() a Variadic | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-82604@lists.php.net to get a copy of this message | ||
Hi,
On 13 February 2015 at 19:31, Andrea Faulds <ajf@ajf.me> wrote:
>
> > On 13 Feb 2015, at 11:16, Andrea Faulds <ajf@ajf.me> wrote:
> >
> > Hey,
> >
> >> On 13 Feb 2015, at 07:28, Michael Wallner <mike@php.net> wrote:
> >>
> >> On 12/02/15 19:55, Thomas Punt wrote:
> >>
> >>> I'd like to propose to make empty() a variadic, where if any
> >>> arguments passed in are considered empty, then false is returned
> >>
> >> Should that read "if any arguments passed in are considered *NOT* empty,
> >> then false is returned"?
> >
> > No, I think it's correct, if confusingly phrased. I believe Thomas is
> proposing variadic empty() where TRUE is returned if any of its arguments
> are empty, otherwise FALSE. So, empty($a, $b, $c) would be equivalent to
> empty($a) || empty($b) || empty($c), much like isset($a, $b, $c) is
> equivalent to (and implemented as) isset($a) && isset($b) && isset($c).
>
> Wait, I think I made a mistake.
>
> * Thomas proposed "if any arguments passed in are considered empty, then
> false is returned", i.e. !(empty($a) || empty($b) || empty($c)) if his
> words are taken literally. This doesn't make much sense, I think it was a
> mistake.
> * You suggested he may have meant "if any arguments passed in are
> considered *NOT* empty, then false is returned", i.e. (empty($a) &&
> empty($b) && empty($c))
> * I assume Thomas actually meant "where if any arguments passed in are
> considered empty, then *true* is returned", i.e. (empty($a) || empty($b) ||
> empty($c))
>
> Sorry for the confusion.
>
> I think the || behaviour is the most useful, as it's the analogue of
> isset's. So !empty($a, $b, $c) would work similarly to isset($a, $b, $c),
> and similarly, !isset($a, $b, $c) would work similarly to empty($a, $b, $c).
>
For example: echo $a, $b, $c, & empty($a, $b, $c), they are treated equal,
if the empty() means if any one of them is empty then result is TRUE, the
advantage of it disappeared:
if (empty($a, $b, $c)) {
// you might want to check it again.
if (empty($a)) {
//blah blah.
} else if (empty($b)) {
}
}
>
> But that's just my opinion. :)
> --
> Andrea Faulds
> http://ajf.me/
>
>
>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
Reeze Xia
http://reeze.cn