【问题标题】:How to assign array variable using explode value in PHP? [duplicate]如何在 PHP 中使用爆炸值分配数组变量? [复制]
【发布时间】:2017-04-12 09:52:33
【问题描述】:

这是我的 sample.json 文件

  "general": {
    "option_name" : "option_name",
    "filter_name" : "filter name"
}

我想使用键更新值

$string = "general.filter_name";

$updateContent = "new filtername";

$langArray = explode('.',$string);

print_r($langArray);

/*Array
(
[0] => general
[1] => filter_name
) */


$file='assets/sample.json';

$jsonString = file_get_contents($file);
$data = json_decode($jsonString, true);

**$data['general']['filter_name'] = $updateContent; **


$newJsonString = json_encode($data);
file_put_contents($file, $newJsonString);

这里我要赋值数组

 [0] => general
 [1] => filter_name

应该是

$data['general']['filter_name']

如何定义这样的数组?谢谢

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    您可以使用参考来做到这一点:

    $json = file_get_contents('assets/sample.json');
    $json = json_decode($json, true);
    
    $path = "general.filter_name";
    $path = explode('.', $path);
    
    $ref = &$json;
    
    foreach ($path as $key) {
        $ref = &$ref[$key];
    }
    
    $ref = "new filtername";
    unset($ref);
    

    它是如何工作的:

    1. 为您的阵列创建一个引用:$ref = &$json;
    2. 遍历$path 项目以获得$json['general']['filter_name'] 的值:
      1. 在第一次迭代中$ref 将引用$json['general']
      2. 在第二次迭代中,$ref 将引用 $json['general']['filter_name'] - 这正是我们想要的
    3. 当分配 $ref = "new filtername"; 时,您正在分配 $json['general']['filter_name'] = "new filtername";
    4. 不要忘记删除引用unset($ref);,否则可能会更改$ref,从而更改$json['general']['filter_name']

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 2014-11-21
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多