0

我有一个问题需要解决。

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

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

非常感谢。

4

3 回答 3

3

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

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

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

于 2012-11-09T14:34:59.383 回答
2

好吧,它来自文本文件的字符串,文本文件中没有“类型”。如果要将文本值强制转换为更合适的数据类型,则需要测试它们可能最适合的类型。您应该检查某些东西是否适合int使用ctype_digit,如果适合,则将其转换。

实际上,字符串对于数学运算也可以很好地工作,PHP 会在必要时自动将其转换为数字。

于 2012-11-09T14:36:44.030 回答
1

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

intval($myvar);
于 2012-11-09T14:33:49.997 回答