Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中,如何使用for循环中的数据直接按值更改.json文件中的数据?_Php_Json_Reference - Fatal编程技术网

在php中,如何使用for循环中的数据直接按值更改.json文件中的数据?

在php中,如何使用for循环中的数据直接按值更改.json文件中的数据?,php,json,reference,Php,Json,Reference,我有许多dataxxxx.json文件,需要通过分配一个从外部文件(replacements.txt)获取的值来修改这些文件。在进行任何更改之前,.json文件是直接使用更改编写的,但现在该文件是在没有任何修改的情况下编写的。如果我激活了行(现在已注释)$parameter=“ABCDEF”,那么.json文件将使用“ABCDEF”写入。我认为这取决于foreach循环在副本上工作这一事实,但我认为,将符号&作为数据的值,而不是作为参考。谁能告诉我哪里错了 replacements.txt文件的

我有许多dataxxxx.json文件,需要通过分配一个从外部文件(replacements.txt)获取的值来修改这些文件。在进行任何更改之前,.json文件是直接使用更改编写的,但现在该文件是在没有任何修改的情况下编写的。如果我激活了行(现在已注释)$parameter=“ABCDEF”,那么.json文件将使用“ABCDEF”写入。我认为这取决于foreach循环在副本上工作这一事实,但我认为,将符号&作为数据的值,而不是作为参考。谁能告诉我哪里错了

replacements.txt文件的内容:

566-3245541-210~960M-KL45 
561-5439945-450~LM_5622-RL.1
560-5517564-260~LM_6332-MK.7
dataxxxx.json如下所示:

{
"autoreport": false,
"autocounter": false,
"job": "",
"note": "",
"pcm": {
    "name": "",
    "sign": 0,
    "tollerance": 0,
    "accurancy": 90
},
"aff": {
    "name": "",
    "sign": 0,
    "tollerance": 0,
    "accurancy": 70
},
"machines": [
    null,
    null,
    {
        "id": 1,
        "note": "",
        "parts": [
            {
                "conditions": {
                    "fgg1": 1,
                    "validated": false,
                    "fgg2": 6,
                    "validated": false
                },
                "fixed": false,
                "image": {
                    "name": "hr_34450.jpg",
                    "width": 1920,
                    "height": 1080,
                    "depth": 24,
                    "tiled": false
                },
                "list": [
                    {
                        "code": 101,
                        "id": "645-67719728-300",
                        "parameters": [
                            60,
                            588,
                            34
                        ]
                    },
                    {
                        "code": 901,
                        "id": "589-00687671-420",
                        "parameters": [
                            "566-3245541-210",
                            "561-5439945-450",
                            "560-5517564-260"
                        ]
                    }
                ]
            }
        ]
    },
    null,
    null,
    null,
    null,
    null
]
}

php代码是:

$replacements=array();
$replacementsdata=readDataFile($GLOBALS["DATADIR"].DIRECTORY_SEPARATOR_REVERSE."replacements.txt");
foreach($replacementsdata as &$line){
    $line=trim($line);
    if(strlen($line)>0){
        $elements=explode("~",$line);
        $original=trim($elements[0]);
        $compatible=trim($elements[1]);
        $replacements[]=array("original"=>$original,"compatible"=>$compatible);
    }
}

$files=glob($GLOBALS["DATADIR"].DIRECTORY_SEPARATOR_REVERSE."data*.json");
foreach($files as &$file){
    $basename=basename($file);
    $elements=json_decode(file_get_contents($file),TRUE);
    switch($basename){
    case "dataindex.json":
        //...
        break;
    default:
        foreach($elements["machines"] as &$machine){
            if($machine!==NULL){
                foreach($machine['parts'] as &$part){
                    if($part!==NULL){
                        foreach($part['list'] as &$data){
                            if($data!==NULL){
                                $code=&$data["code"];
                                switch($code){
                                    case "901":
                                        foreach($data['parameters'] as &$parameter){
                                            foreach($replacements as &$replacement){
                                                if($parameters==$replacement["original"]){
                                                    $parameter=&$replacement["compatible"];
                                                    //$parameter="ABCDEF";
                                                    break;
                                                }
                                            }
                                        }
                                        break;
                                    default:
                                        break;
                                }
                            }
                        }
                    }
                }
            }
        }
        break;
    }
    $fp=fopen($file,'w');
    fwrite($fp,json_encode($elements));
    fclose($fp);
}