PHP - parse_ini_(string | file) - 为什么false和no值被截断为空字符串?

So I'm working on cleaning up some older code and came across a snippet where we are doing parse_ini_string (for >=5.3) and parse_ini_file (for all others) and noticed that ini settings with values of false where being truncated to empty strings, but values of true were being changed from true to 1.

According to the php docs (under the notes section): 'Values null, no and false results in "", yes and true results in "1"'. This seems counter-intuitive. We want to allow support users the ability to enter true or false via frontend guis, vs having them enter 0 and 1 (as they don't speak binary). In order to do so, I had to add some hacktacular code to check for presence of a key, and if present but empty, assume the value was false before php parsed it.

Why would the php devs not ensure a consistent return of true or false with a return value of 1 or 0, vs what they are doing now, which is truncating the false to an empty string?

And what about own constants?

define('yep', '1');
define('nope', '0');

$iniString = "
foo = yep
bar = nope
";

var_dump(parse_ini_string($iniString));

EDIT:

According to goba@php.net it's a feature:

This feature(!) is there so you can convert from booleans to strings, then back to booleans or to integers and then to booleans, and you get the same boolean you started from...

boolean -> string -> boolean
TRUE        "1"       TRUE
FALSE       ""        FALSE

boolean -> string -> integer -> boolean
TRUE        "1"        1         TRUE
FALSE       ""         0         FALSE

More info: https://bugs.php.net/bug.php?id=19575