当前位置: 首页 > 知识库问答 >
问题:

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

易飞文
2023-03-14

所以我正在清理一些旧的代码,并遇到了一个我们正在做parse_ini_string的片段

根据php文档(在notes部分下):“值null、no和false在”“中产生结果,yes和true在“1”中产生结果。”。这似乎违反直觉。我们希望支持用户能够通过前端GUI输入真或假,而不是让他们输入0和1(因为他们不会说二进制)。为了做到这一点,我必须添加一些hacktacular代码来检查是否存在密钥,如果存在但为空,则在php解析该值之前假设该值为false。

为什么php开发人员不能确保返回值为1或0的true或false的一致性,而他们现在正在做的是将false截断为空字符串?

共有1个答案

关玮
2023-03-14

那自己的常数呢?

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

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

var_dump(parse_ini_string($iniString));

编辑:

根据goba@php.net这是一个特征:

此功能(!)你可以把布尔值转换成字符串,然后再转换成布尔值或整数,然后再转换成布尔值,你得到的布尔值和你开始的一样。。。

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

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

更多信息:https://bugs.php.net/bug.php?id=19575

 类似资料:
  • 问题内容: 在JavaScript中,为什么要评估为,但要评估为? 我在一个文本输入字段进行数字运算,和我正在检查该字段为,或。当有人在该字段中输入几个空格时,我的验证在这三个字段上均失败,并且我对为什么它无法通过检查感到困惑。 问题答案: JavaScript将一个空字符串解释为0,然后失败了isNAN测试。您可以先在字符串上使用parseInt,它不会将空字符串转换为0。然后结果应为isNAN

  • 我有点困惑php函数布尔瓦尔是如何工作的。考虑以下几点

  • 问题内容: 我正在尝试从服务器获取JSON响应,并且当字符串长度达到约5525个字符时,响应字符串似乎总是被截断。 我还通过使用HttpEntity并读取响应流进行了尝试。但这也会在大约该长度处截断字符串。 请让我知道如何处理此问题。创建此文章时,我将其作为参考。 http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-rest

  • 我不明白的是,为什么这种行为一直如此?重置当前线程的状态,而不重置它所调用的线程的状态,这有什么原因吗?

  • 在一个空列表中,当循环计算到时发生的过程是什么? 例如: 本质上,我想知道

  • 我遇到过一个奇怪的情况,在MSFT Azure短语断路器处理完一段文本后,有一段代码被设计用来剔除空白字符串、句点破折号等。我需要帮助找出如何调试这个问题。 当给定值时,以下代码块返回。显然,期望方法在第一个语句之后返回。在要看的899个短语中,似乎只有两个有这个问题。在另一台机器上也会发生。 下面是调试器的快照。 这可能是Visual Studio或.NET中的bug吗?我试着使用各种可视化器,