保留变量类型?

时间:2012-11-09 14:32:40

标签: php variables types

我遇到了一个需要解决的问题。

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

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

非常感谢。

3 个答案:

答案 0 :(得分:3)

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

除此之外,它与JavaScript中的一样无关紧要。在JS中,如果你有a = "1"; b = "2"; alert(a+b),那么你得到12,但是在PHP中得到3,因为+需要数字。

PHP的类型强制本身解决了几乎所有问题,所以通常不需要指定某种类型。

答案 1 :(得分:2)

嗯,来自文本文件的字符串,没有"类型"在文本文件中。如果要将文本值强制转换为更合适的数据类型,则需要测试它们最适合的类型。您应该使用ctype_digit检查某些内容是否适合成为int,如果是这样的话。

实际上,一个字符串在数学运算中运行得非常好,PHP会在必要时自动将其转换为数字。

答案 2 :(得分:1)

您知道是否要将数字的字符串值转换为数字变量使用

intval($myvar);