Req #76500 [Com]: fputcsv() is ignoring the value FALSE
| From: | spam2 at rhsoft dot net | Date: | Tue, 19 Jun 2018 17:06:08 +0000 |
| Subject: | Req #76500 [Com]: fputcsv() is ignoring the value FALSE | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-215794@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=76500&edit=1
ID: 76500
Comment by: spam2 at rhsoft dot net
Reported by: thomas at landauer dot at
Summary: fputcsv() is ignoring the value FALSE
Status: Re-Opened
Type: Feature/Change Request
Package: Filesystem function related
Operating System: Linux Mint
PHP Version: 7.1.18
Block user comment: N
Private report: N
New Comment:
but csv is all about TEXT and not numbers, so there is no point that something is casted to int - if
you want
http://php.net/manual/en/language.types.type-juggling.php
if you want to avoid this you have to cast your values explicit, that's it
Previous Comments:
------------------------------------------------------------------------
[2018-06-19 17:01:22] thomas at landauer dot at
You don't understand what I mean ;-)
php > echo (int)true;
1
php > echo (int)false;
0
------------------------------------------------------------------------
[2018-06-19 16:55:19] spam2 at rhsoft dot net
> CSV (and
fputcsv()) does have a distinction
> between strings and numbers: the quotes! true
> is exported as 1, not as
> "1". Why?? => The
> only possible answer I see: Because it's casted
> to int (not to string)
you don't understand how PHP works
php > echo (string)true;
1
php > echo (string)false;
php >
------------------------------------------------------------------------
[2018-06-19 16:30:14] thomas at landauer dot at
> CSV knows nothing about NULLs and booleans â it's all about
strings
Just reasoned about this some more. And I came to the conclusion that it isn't true ;-)
CSV (and fputcsv()) does have a distinction between strings and numbers: the quotes!
true is exported as 1, not as "1". Why?? => The
only possible answer I see: Because it's casted to int (not to
string).
Well, and if you cast false to an int, what do you get? =>
0!
------------------------------------------------------------------------
[2018-06-19 15:52:31] thomas at landauer dot at
> And you won't be able to distinguish either from an empty string.
Well, an empty string is not possible in a boolean field ;-)
> In my opinion, adding yet another optional argument to fputcsv()
does more harm than good.
Why? Which harm?
------------------------------------------------------------------------
[2018-06-19 15:44:14] cmb@php.net
> So if you have a nullable boolean field in your database, this
> function becomes completely useless, since you can't tell
> null
> from false.
And you won't be able to distinguish either from an empty string.
CSV knows nothing about NULLs and booleans â it's all about
strings. You have to cater to that yourself in any way that suits
your use-case.
> But I'd suggest to add an optional argument to configure how
> false is treated - [â¦]
In my opinion, adding yet another optional argument to fputcsv()
does more harm than good. However, feel free to start the RFC
process[1]. :)
[1] <https://wiki.php.net/rfc/howto>
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=76500
--
Edit this bug report at https://bugs.php.net/bug.php?id=76500&edit=1