如何在另一个PHP文件中永久更改值

时间:2013-03-21 00:00:26

标签: php file-io

我正在使用配置文件来处理我正在处理的事情。在该配置文件中,我有一行$twelveHourTimeEnabled = true;。我希望能够在此处将true切换为false,但我不确定如何将该行从true更改为false

目前,我正在使用单独的文件切换两者,但我知道这一定效率非常低。

$fn = "config.php"; 
$file = fopen($fn, "w+"); 
$size = filesize($fn); 

$twelveHourConfig = "12hrconfig.php";
$twelveHourConfigFile = file_get_contents($twelveHourConfig);

fwrite($file, $twelveHourConfigFile);

fclose($file);

如何在不需要读取其他两个文件的情况下将真值切换为false,反之亦然?

编辑:

此项目是桌面应用程序的PHP插件(适用于Mac OS X的Alfred App),无论用户身在何处,都可将电视信息返回给用户。因此,在调用关键字时会执行此操作。因此,无法使用数据库等。

编辑2: 抱歉,我没有使用JSON或其他文件IO操作的经验,因为我通常处理CRUD。此外,知道我无法控制用户计算机等。这需要与PHP一起使用,默认安装Mac OS X时会安装它。仅此而已。如果有人可以解释JSON我很乐意使用它,我只是对它一无所知,如何使用它等等。

2 个答案:

答案 0 :(得分:1)

对于配置文件,我建议进行以下设置。

我们假设这是config.php

的内容
<?php

return array(
    'opt1' => 'value1',
    'opt2' => 'value2',
);

然后,加载此配置:

<?php

$config = require 'config.php';
// $config['opt1'] == 'value1'

修改配置可以通过更改阵列并将其写回来完成:

$config['opt2'] = 'value2 but different'; 

file_put_contents('config.php', '<?php return ' . var_export($config, true) . ';');

要在您的案例中交换配置文件,您只需使用copy()

copy('12hrconfig.php', 'config.php');

答案 1 :(得分:1)

我不确定为什么你认为JSON有点矫枉过正。你真的只需要四个PHP方法 - 2个用于读/写文件,2个用于编码/解码JSON。哎呀,你甚至不需要理解JSON来使用它,如下所述,但是能够查看configfilename并读取它可能会很好,所以你可以随时学习一点JSON;)

基础知识是假设您有一个包含配置的数组,例如:

$configArray['key'] = 'value';

在json中写出来:

file_put_contents('configfilename', json_encode($configArray));

要阅读文件:

$configArray = json_decode(file_get_contents('configfilename'), true);

注意json_decode的第二个参数已经显式设置为true,因此$ configArray将是一个关联数组。这是个人偏好;默认情况下,它将成为一个对象。

(此答案主要基于有关reading/writing JSON的问题。)