【问题标题】:Preserve variable type?保留变量类型?
【发布时间】:2012-10-29 21:13:49
【问题描述】:

我有一个问题需要解决。

我有一个关联数组,例如:

private $formData = [
"lastPrintedNumber" => 0,
];

我从带有函数的文本文件中获取这些数据...:

$line = fgets( $formDataFile );
$explodedLine = explode( ' ', $linea );
$this->formData[ 'lastPrintedNumber' ] = (int) $explodedLine[2];

它将正确的类型 int 分配给 $formData[ lastPrintdNumber ]。

但我不想对分配进行硬编码,而是想做一个foreach,在数组中寻找正确的数据。

例子:

$line = fgets( $formDataFile ) ) != false ) {
$explodedLine = explode( ' ', $linea );
foreach( $this->formDatos as $key => $value ) {
    if( $explodedLine[0] == $key ) {
        $this->formData[ $key ] = $value;
    }
}

问题在于它将值分配为string,在某些情况下我需要int 进行数学运算。

所以我需要一种方法来稳定formData[ 'lastPrintedNumber' ] 的数据类型始终为int

非常感谢。

【问题讨论】:

  • PHP 将根据需要在 string/int 之间自动转换。 $x = 7 * '3' 仍然是 21,即使它是 int * 字符串。

标签: php variables types


【解决方案1】:

你知道如果你想将一个数字的字符串值转换成一个数字变量使用

intval($myvar);

【讨论】:

    【解决方案2】:

    只是一个小点:您应该在if 中使用==,而不仅仅是=

    除此之外,它并不像在 JavaScript 中那样重要。在 JS 中,如果你有 a = "1"; b = "2"; alert(a+b),你会得到 12,但在 PHP 中你会得到 3,因为 + 需要数字。

    PHP 的类型强制几乎可以自己解决所有问题,因此通常不需要指定某个类型。

    【讨论】:

      【解决方案3】:

      嗯,它一个来自文本文件的字符串,文本文件中没有“类型”。如果要将文本值强制转换为更合适的数据类型,则需要测试它们可能最适合的类型。您应该使用ctype_digit 检查某事物是否适合作为int,如果适合,则进行转换。

      确实,字符串对于数学运算也非常适用,PHP 会在必要时自动将其转换为数字。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-18
        • 2019-03-14
        • 2012-10-09
        • 1970-01-01
        • 2019-04-13
        • 1970-01-01
        相关资源
        最近更新 更多