素材牛VIP会员
PHP如何修改一个文件中数组内容的某个值或者是...?
 許***愿  分类:PHP代码  人气:690  回帖:3  发布于6年前 收藏

这个疑问困惑很久了,希望有大佬指点一二。

假如config.php中的内容是:

<?php
$config['heelo'] = array(
    'k1'    => '111111',
    'k2'    => '222222',
    'k3'    => '333333',
);

或者是:

<?php exit;?>{
    "k1": "111111",
    "k2": "222222",
    "k3": "333333",
}

我该如何修改'k1'下的值?不用str_replace的方法请问如何实现?(因为'k1'的值是不固定的,我想要的方法是找到键,然后修改键的值并保存文件)

 标签:htmlhtml5php

讨论这个帖子(3)垃圾回帖将一律封号处理……

Lv1 新人
编***魔 职业无 6年前#1

第一种比较好做,第二种你先看下是不是写错了,这个结构类似JSON对象但是又不是,这就不太好做了。
第一种的方法

include '....'; // 此处为文件名

// 下面只是示例,随便怎么操作$config['hello']
foreach($config['hello'] as $key => $value) {
    ...
}

$output = "$config['hello'] = " . var_export($config['hello'], TRUE);
file_put_contents('....', $output); // 省略号处为原来的文件名

主要是用var_export输出可供PHP读取的数组,此函数第二个参数为false时,直接输出,为true时返回结果到变量。
有一点需要提醒一下,这个函数生成的数组排版并不是很好看,如果介意的话还是自己写一个吧。

Update

修改k1的实例代码

include '....';

$config['hello']['k1'] = 'aaaa';

$output = "$config['hello'] = " . var_export($config['hello'], TRUE);

file_put_contents('....', $output);
Lv6 码匠
貪***续 PHP开发工程师 6年前#2

其实最简单的办法就是config文件不要这么写,config文件格式一般如下:

<?php
    return [
        'k1' => '111',
        'k2' => '222',
        'k3' => '333'
    ];

外部文件可以通过require该文件直接把数组的值赋给一个变量,如

$config = require 'config.php';

获取、改变值都很简单,要写回文件也容易。

Lv3 码奴
65***14 PHP开发工程师 6年前#3

整体读, 修改数组, 然后整体写.

使用var_export($data, true)可以获取数组内容的字符串. 然后写文件就OK

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取