使用ini_set()时,新值的正确值类型是什么


What is the proper value type of the new value when using ini_set()?

我将使用"display_errors"作为示例:

ini_set('display_errors', 1);// int
ini_set('display_errors', '1');// string
ini_set('display_errors', 'on');// string
ini_set('display_errors', true);// boolean

我知道以上所有的方法都是一样的。如果有人知道的话,我只是想知道什么是最合适的。

php.net上的语法如下:

string ini_set(字符串$varname,字符串$newvalue)

所有参数都应为string。在php.ini文件中,所有布尔值都显示为OnOff。以下解决方案应该是最合适的解决方案:

ini_set('display_errors', 'On');
ini_set('display_errors', 'Off');

在配置文件的文档中,您可以找到以下部分:

布尔值可以设置为:
是的,是的错误、关闭、否、无

http://php.net/manual/en/configuration.file.php

ini_get上,返回值是一个字符串。文件上写着:

布尔ini值off将作为空字符串或"0"返回,而布尔ini值on将作为"1"返回。函数还可以返回INI值的文本字符串。

http://php.net/manual/en/function.ini-get.php

ini_get的返回值和ini_set的值必须是字符串!

参考:http://php.net/manual/en/function.ini-set.php

string ini_set ( string $varname , string $newvalue )

所以你必须为newValue 使用一个字符串

例如:

<?php
echo ini_get('display_errors');
if (!ini_get('display_errors')) {
    ini_set('display_errors', '1');
}
echo ini_get('display_errors');
?>

它必须与您在php.ini文件中设置的相同。来自文件:

string ini_set ( string $varname , string $newvalue )

因此,这意味着您可以为$newvalue使用任何字符串,这将是最合适的方式。但通常我会将其设置为(int) 1