Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:88318 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 37765 invoked from network); 18 Sep 2015 11:38:37 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 18 Sep 2015 11:38:37 -0000 Authentication-Results: pb1.pair.com header.from=lester@lsces.co.uk; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=lester@lsces.co.uk; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain lsces.co.uk from 217.147.176.214 cause and error) X-PHP-List-Original-Sender: lester@lsces.co.uk X-Host-Fingerprint: 217.147.176.214 mail4-2.serversure.net Linux 2.6 Received: from [217.147.176.214] ([217.147.176.214:47728] helo=mail4.serversure.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id DA/18-19961-BB7FBF55 for ; Fri, 18 Sep 2015 07:38:36 -0400 Received: (qmail 24390 invoked by uid 89); 18 Sep 2015 11:38:32 -0000 Received: by simscan 1.3.1 ppid: 24381, pid: 24387, t: 0.1880s scanners: attach: 1.3.1 clamav: 0.96/m:52/d:10677 Received: from unknown (HELO ?10.0.0.8?) (lester@rainbowdigitalmedia.org.uk@86.160.91.166) by mail4.serversure.net with ESMTPA; 18 Sep 2015 11:38:32 -0000 To: internals@lists.php.net References: <55F07BA4.2000204@gmail.com> <55F6B911.9080400@gmail.com> <96BE7F01-D04B-483B-B1A3-B45CED6DFCDC@craigfrancis.co.uk> <55F6F08C.1020506@gmail.com> <0BEF6D82-CB5F-49F6-A3A4-3267924A0CDA@thesba.com> <55F72CA9.2060301@gmail.com> <09369945-76FE-4E08-9C2C-15FB0577AD27@thesba.com> <55F752E7.9070801@gmail.com> <55F9B4C7.3050700@gmail.com> <440C64A2-4B4F-4AEF-ACE3-F3A6637EBAB6@thesba.com> <55F9D704.5050002@lsces.co.uk> <55F9EFA2.9020908@lsces.co.uk> <0022A1D9-DC37-4F49-B58E-FBED5AF872BA@gmail.com> <55F9FAB3.2050100@lsces.co.uk> <55FB19CB.7080707@gmail.com> <55FB3117.5040204@lsces.co.uk> <55FB3A60.1040601@gmail.com> <55FB4270.7000204@lsces.co.uk> <55FB4969.7080600@gmail.com> <55FB5BA6.6050606@lsces.co.uk> <55FBF265.5000502@gmail.com> Message-ID: <55FBF7B7.4050603@lsces.co.uk> Date: Fri, 18 Sep 2015 12:38:31 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <55FBF265.5000502@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] PHP 7.1 - Address PHPSadness #28? From: lester@lsces.co.uk (Lester Caine) On 18/09/15 12:15, Rowan Collins wrote: >> But the whole problem here is that isset does NOT identify that the >> result set has fields that are NULL. > > My point was that if you use isset() in place of is_null(), you don't > have to switch off any errors. That's the only difference between the > two functions - that isset() doesn't raise a notice if the variable > doesn't exist. BUT YOU ARE MISSING THE POINT ... Forget enum and more than three values in a variable ... For SQL data coming from any decent database each variable can either have a value in, ( which may be an empty string ) or be NULL. The NUMBER of fields returned does not matter, a query returning a single record can have a variable so the third condition is that rather than a field being NULL, it does not exist, so testing for isset() only works for a field that 'is set' and empty() only works with an empty value. Checking for the field being present but NULL needs is_null() but THAT throws a notice for those fields which have not been returned in this particular result set. And one scenario here is that the database scheme actually needs updating - but that should be handled differently - however a system may have picked up an old copy of the data by mistake and the missing fields need handling cleanly. We are not talking about the number of states stored IN a variable, but just what a variables own states are. Adding another variable to enumerate what say 'a date relates to' is a different matter. The date value can be a valid date ( and genealogical date goes back before most 'empty' date values ) or NULL indicating no date set OR the variable can be missing from the result set. If you add in 'empty' one might say we have for distinct states? -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk