我遇到了一个需要解决的问题。
我有一个关联数组,例如:
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
。
非常感谢。
答案 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);