1

由于几个原因,我试图在不使用 parse_ini_file 的情况下解析一个 ini 文件。我将文件完美地解析为多维数组,并且能够正确搜索它以及所有内容。我遇到的问题是我希望根据类型解析文件。文件中有字符串、浮点数和整数,我需要将它们原样存储,而不是全部存储为字符串。

用户需要能够获取存储的值,所以基本上他们会执行“使用预算键从标题部分获取浮点数”,这将返回 4.5。但是,如果他们试图从同一部分获取字符串或整数,它将失败。我有它能够获取密钥,但由于它们都存储为字符串,这是唯一有效的方法。我想知道如何将值的类型从字符串更改为整数或浮点数。

任何人有任何想法如何做到这一点?

4

2 回答 2

1

准确预测您正在查看的价值类型将非常困难。字符串可以包含数字,小数点出现在句子中,等等......

如果您正在处理ini为自己使用而生成的自定义文件,您可能能够将值的类型编码到 ini 设置中。标准设置可能如下所示 -

default_username=Zamereon

因此,您可以将数据类型附加或添加到设置中 -

(s)default_username=Zamereon // one character depicting the data type,
(i)default_reputation=1      // you could use strpos.

default_balance=0.5=f // use list($name,$value,$type) = explode('=',$setting)

参考 -


另一个建议是将它们作为字符串保留在已解析的多维数组中,仅在您真正需要它们时进行转换。在处理来自 ini 文件的一些输入数据的函数或代码行中,您将确切知道需要什么数据类型,如果它是浮点数,只需根据需要其转换为浮点数。没有真正需要立即将每个变量转换为正确的形式,因为它们的值不会改变它的文本表示形式;转换只需要在执行一些进一步的操作之前进行。

于 2013-03-07T23:56:47.197 回答
0

您可以使用类型转换

PHP 中的类型转换与 C 中的工作方式非常相似:所需类型的名称写在要转换的变量之前的括号中。

<?php
$foo = 10;   // $foo is an integer
$bar = (boolean) $foo;   // $bar is a boolean
?>

允许的演员表是:

(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(array) - cast to array
(object) - cast to object
(unset) - cast to NULL (PHP 5)
于 2013-03-07T23:42:53.473 回答