PHP에서 다차원 배열을 가지고 있는데, 어떤 규칙에 따라 조작하고 싶습니다.PHP에서 다차원 배열의 내용이 변경 되었습니까?
입력 - 배열 : (변수가 JSON로 인쇄)
[
{
"meta":{
"title": "Adressdata",
"name": "adress"
},
"data":{
"desc":{ "tooltip": "text",
"maxlength": "100"
},
"line1":{ "tooltip": "Recipient",
"maxlength": "40"
}
}
]
규칙 :는
{
"0>meta>title": "Companyaddress",
"0>data>desc": {
"tooltip": "Another Text",
"maxLength": "150"
}
}
(2 규칙이 인덱스는 입력에서 어떤 필드를 설명합니다 - 배열을 변경해야하며 값에 삽입 할 데이터가 들어 있습니다. 두 번째 규칙은 객체를 삽입하려고합니다.)
문제 :
나는 규칙에 따라 입력 배열의 내용을 변경하려면,하지만 난 그 일에 투쟁.
는 여기에 내가 이미 가지고있는 PHP 코드입니다 :
<?php
$input = json_decode(file_get_contents("inputData.json"),true);
$rules = json_decode(file_get_contents("rules.json"),true);
foreach ($rules as $target => $replacement) {
//rule: "0>meta>title": "newTitle"
$node = $input;
foreach (explode(">",$target) as $index) {
$node = $node[$index];
}
$node = $replacement; //replace doesn't work
}
echo "Result-Array: ";
print_r($input);
?>
모든 것은 내가 값을 변경할 수 있다는 점을 제외에서 작동합니다. 왜? 왜냐하면 매번 $ node-Variable을 설정하기 때문에 새로운 변수를 만듭니다. 그리고 $ node의 내용 만 변경하고 $ input의 내용은 변경하지 않습니다.
그래서 나는 참조 사용하려고 - 중 하나가 작동하지 않습니다 이 코드에 2 $ 노드 라인을 변경할 경우 : 때문에,
$node = &$input;
[...]
$node = &$node[$keys[$i]]; //go to child-node
그러나이 작동하지 않습니다 자식 노드로 이동하려는 두 번째 줄은 부모 요소를 변경합니다 ($ node는 참조이므로). 그렇게 할 수있는 비결이 있다면
내가 아무 생각이 없다, 나는 누군가가 나를
우리에게'입력-Array'를 선언하는 코드를 보여주십시오. – Smandoli
@Smandoli : 위 JSON 콘텐츠가있는 텍스트 파일이 있습니다. '$ input = json_decode (file_get_contents ("path.json"), true); ' – maja
다른 형식을 갖도록 규칙을 변경할 수도 있지만 같은 기능이 필요합니다. – maja