페이지의 누락 된 데이터를 채우기 위해 html 페이지 템플릿에 전달할 데이터 배열을 갖기 위해 노력하고 있습니다. 여기 내가 가지고있는 배열과 발생하는 문제가 있습니다.PHP에서 배열 병합/병합
protected $data = [
"head" => [
"css" => ["main"], /*add other default css files here*/
"meta" => ["description" => HTML_DESCRIPTION, "keywords" => HTML_KEYWORDS, "charset" => HTML_CHARSET], // add other meta data here
"JS" => [/*"src"*/], //set default js scripts here
"title" => [0 => HTML_TITLE]
],
"body" => [
"title" => [
"text" => BODY_TITLE_TEXT
],
"navigation" => [
"links" => [
"Home" => "home",
"Blog" => "blog"
]
]
]
];
다음 코드는 작동 시키려고 사용하는 코드입니다.
// $title = ["text" => "NEW TITLE"]
public function build($title = [], $navigation = []){
$defualts = $this->data;
$data_to_add["body"] = ["title" => $title, "navigation" => $navigation];
$data = array_merge_recursive($defualts,$data_to_add);
require_once APP."/view/templates/body.php";
}
그리고 대신 $ 데이터를 대체하는 볼 수 있듯이 내가
array(2) {
["head"]=>
array(4) {
["css"]=>
array(1) {
[0]=>
string(4) "main"
}
["meta"]=>
array(3) {
["description"]=>
string(15) "DESCRIPTION"
["keywords"]=>
string(41) "KEY1,KEY2,KEY3"
["charset"]=>
string(5) "UTF-8"
}
["JS"]=>
array(0) {
}
["title"]=>
array(1) {
[0]=>
string(15) "SITE TITLE"
}
}
["body"]=>
array(2) {
["title"]=>
array(1) {
["text"]=>
array(2) {
[0]=>
string(15) "OLD TITLE"
[1]=>
string(9) "NEW TITLE"
}
}
["navigation"]=>
array(1) {
["links"]=>
array(2) {
["Home"]=>
string(4) "home"
["Blog"]=>
string(4) "blog"
}
}
}
}
에서 얻은 결과는 [몸] [제목]은 [텍스트] NEW 제목에 문자열 인에서 텍스트를 변경 2 개의 값을 보관 유지하는 배열 array_merge_recursive가 그 이유라고 생각합니다. 나는 값이 이미 배열 일 때 배열을 생성하고 그렇지 않은 경우 값을 대체하는 코드를 작성하는 데 어려움을 겪고 있습니다.
예를 들어 특별한 탐색 기능이있는 템플릿 페이지가있는 경우 $ data [ "navigation"[ "links"] [ "sublinks"] [ "sublink1", "sublink2", "sublink3" ]. array_merge_recursive()와 나는 sublinks 배열을 추가 할 수 없습니다 동시에 "NEW TITLE"와 "OLD TITLE"를 대체합니다.
감사를 어떤 사회가 제공 할 수있는 도움을!
내가보기에는 하나의 문제입니다. uld는 기본값을 추가하는 대신 기본값을 다시 말해야합니다. 편집 : if $ navigation = [ "sublinks"] [ "link1", "link2"]; $ data [ "body"] [ "navigation"]는 더 이상 "links"섹션을 포함하지 않습니다. – MisterQuacker