【问题标题】:PHP reading from file and adding onePHP从文件中读取并添加一个
【发布时间】:2011-11-17 20:58:51
【问题描述】:

假设我有文件 foo.txt,其中有一个数字,即 0。 然后我读取该文件并将 0 存储到数组中。我想将数字加 1,所以我只使用速记运算符 ++ 但它不起作用,但 += 可以。

$poo = file("foo.txt");
$poo[0]++;
echo $poo; // gives me 0
$poo[0] += 1;
echo $poo; // gives me 1

我知道当我读取文件时poo[0] 的值是带有空格"0 " 的字符串,但为什么它不适用于++

【问题讨论】:

    标签: php string file operators


    【解决方案1】:

    您在使用隐式类型转换的语言中遇到了一个常见错误。当你将 foo.txt 的内容读入 $poo 时,该值被存储为一个字符串。

    当您告诉 PHP 使用 ++ 增加字符串时,PHP 必须尝试确定您的意思。 $poo 包含一个字符串(不是数字),因此 PHP 不知道您要添加 0 + 1 的值;相反,它认为您正在尝试执行字符串操作并提供意外结果。

    在第二种情况下,隐式输入表明,由于您在等式的右侧使用整数(不是字符串),因此您也必须要将左侧转换为整数。

    为了安全起见,您应该明确告诉 PHP 解释器您正在尝试对两个数字执行数学运算:

    $poo[0] = (int)$poo[0] + 1;
    

    更多信息请查看PHP: Type Juggling

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2021-01-23
      相关资源
      最近更新 更多