Req #81456 [Com]: chr(48) is falsy

From: Date: Sun, 19 Sep 2021 21:50:31 +0000
Subject: Req #81456 [Com]: chr(48) is falsy
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-236706@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81456&edit=1

 ID:                 81456
 Comment by:         gib-o-master at mail dot ru
 Reported by:        gib-o-master at mail dot ru
 Summary:            chr(48) is falsy
 Status:             Not a bug
 Type:               Feature/Change Request
 Package:            *General Issues
 PHP Version:        8.0.10
 Block user comment: N
 Private report:     N

 New Comment:

a at b dot c dot de,

im not sure you'll read this :]

1) look at my name, it states "master", so im not a newbie. a b c.

2) argument about '0' was always special, oke, i understand, let it stay special in older
versions of language. the reason of complain is about dragging this little inconsistency into
future, again [0] is not checked, '0' is checked, means different behavior/logic, array vs
string, which are similar constructs, you can access $string[1] and you can access $array[1]. 

3) manual. ye, manuals may contain anything. let's make chr(0) special and drag it into manual,
it's not JS and Python, right.


Previous Comments:
------------------------------------------------------------------------
[2021-09-19 01:49:34] a at b dot c dot de

chr(48) evaluates to the string "0". This is defined and documented as falsy and always
has been; you're complaining about "giving" it "special powers" when what
you're actually asking for is taking away properties that it has always had. It is something
that PHP newbies are frequently surprised by and frequently complain about, but really turns out not
to be a big deal if you pay attention to what you're doing.

This is also not JavaScript nor Python. Apologies if this means that programming in three languages
means more mental work for you than programming in two.

------------------------------------------------------------------------
[2021-09-18 06:19:28] gib-o-master at mail dot ru

i doubt that '0' or chr(48) should be given special powers, it's not intuitive for
JS/Python folks that rely on common behavior.


if ($string) {# '0' will not pass here
}

$x = $string ?: 'default';# '0' will not be selected as $x


if ([0]) {# will not look into array but string will
}

------------------------------------------------------------------------
[2021-09-18 06:03:18] requinix@php.net

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php



------------------------------------------------------------------------
[2021-09-18 05:26:58] gib-o-master at mail dot ru

Description:
------------
previous was marked as spam. this is a language problem, not spam.

Test script:
---------------
if (chr(48)) {
    echo 'never happen';
}

if (chr(0)) {
    echo 'always happen';
}

Expected result:
----------------
never happen
always happen

Actual result:
--------------
always happen


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=81456&edit=1


Thread (9 messages)

« previous php.bugs (#236706) next »