YAML 데이터 을 MySQL 데이터베이스에 저장, 수정 및 검색하는 기능이 필요합니다.PHP는 YAML을 구문 분석하고 값을 쉽게 수정하기 위해 DB에 저장 한 다음 나중에 원래 구조로 돌아갑니다.
내 프로젝트는 (그리고 질문은) 목표 :
- 구문 분석 .yml 파일을 MySQL 데이터베이스
- 로 PHP 다차원 배열
- 스토어 이들에 내 개별 값의 수정을 허용 데이터베이스 기본 목표
- 데이터베이스에서 값을 검색하고 구문 분석 한 다음 .yml 파일로 다시 배치하십시오.
1 단계 - 예제 YAML 파일
string 'name:
singular: null
plural: null
fields:
price:
label: Preis
company_id:
label: null
placeholder: null'
중요한 일이 여기에서 주목해야 할 중첩 된 키 무제한이 될 수 있으며, 또한 키와 값이있을 수 있습니다 동일한 이름/데이터.
2 단계 - 장소이 나는 YAML을 구문 분석 a library called Spyc을 사용하고있는 PHP 배열
에. 위대한 작품! 그것은 내게 다음을 제공합니다 :
array
'name' =>
array
'singular' => null
'plural' => null
'fields' =>
array
'price' =>
array
'label' => string 'Preis' (length=5)
'company_id' =>
array
'label' => null
'placeholder' => null
내 목표는 다음 각각을 MySQL 데이터베이스에 저장하는 것입니다. 그래서 ...
3 단계 -을 CSV
여기나는 다음과 같은 배열에 이러한 세부 사항을 분리하는 foreach()
의 긴 목록 기본적으로 내 자신의 함수를 작성했습니다 :
array
0 => string 'name||singular||' (length=16)
1 => string 'name||plural||' (length=14)
2 => string 'fields||price||label||Preis' (length=27)
3 => string 'fields||company_id||label||' (length=27)
4 => string 'fields||company_id||placeholder||' (length=33)
을 4 단계 - MySQL의 DB 논리적으로
, 나는 데이터베이스에 이러한 문자열을 저장하기 위해 노력하고있어. 스키마가 확실하지 않습니다. 나는 값이 값 열에 end($array[$key]
이고, 키 열은 배열의 나머지 요소를 포함 할 것으로 추측하고 있습니다.
이렇게하면 효과적으로 데이터베이스 내에서 값을 변경하고 다시 구문 분석하여 .yml 파일로 되돌릴 수 있습니다.
5 단계 - 실종입니다!
그래서 지금 무엇을해야할지 모르겠습니다.현재 나는 다음과 같은 논리로 이러한 문자열 구문 분석하려고 해요 :
- 마지막 값
end($array[$key]
이되는 값으로, 배열의 이전의 모든 요소가 부모 열쇠를 내가 일하는 그 코드를 입수하면
- 그 문자열을 효과적으로 배열로 돌려 놓는 것이 다음 우선 순위가 될 것입니다.
더 좋은 방법이 있어야합니다. 내 주요 목표는 데이터베이스의 개별 값을 업데이트 할 수있게하는 것입니다. 내 주요 문제는 배열 차원 수가 일정하지 않다는 사실입니다. 내가 도움이 될 수있는 방법
저를 제공하십시오 : 내 프로젝트의 목표를 (상단 참조) 달성
- 더 적절한 방법을이를 저장할 수있는
- 가장 좋은 방법이있는 경우 값을 쉽게 수정할 수있는 데이터베이스의 데이터 (예 : 1 단계에서 볼 수있는
null
) - 이 데이터를 데이터베이스에서 반환하면 retu 이 키와 값 을 원래 배열 (단계 2)의 정확한 구조으로 바꾸어서 Spyc을 사용하여 이것을 YAML로 다시 변환하고 .yml 파일로 출력 할 수 있습니다. 당신은 YAML로 직렬화 할 수있는 키 - 값 저장소를 만들려면
이것은 흥미 롭습니다! 나는 나중에 당신의 코드를 시도 할 것입니다. 원래 수정 된 선 주문 트리 순회를 보았습니다. http://stackoverflow.com/questions/192220/what-is-the-most-efficient-elegant-way-to-parse-a-flat-table-into- a-tree/192462 # 192462하지만이 방법이 훨씬 쉽고 효율적입니다. – Jimbo
답안의 코드를 사용하여 모든 상위 키를 제공하는 하위 요소를 업데이트 할 수 있어야합니다. 이것이 바로 그 값에 접근하는 올바른 방법일까요? http://sqlfiddle.com/#!2/83c3c/5 내가 찾은 값과 전달 된 키에 따라이 문자열을 생성하는 PHP 함수를 작성할 수 있습니다.'func ($ value, array ($ key1, $ key2)); 예 : ... – Jimbo
하나의 키 또는 여러 개의 키에 액세스하려는 경우 실제로 다릅니다. 'WHERE' 절에서'type'을 지정하는 것은 정보 용으로 만 필요하지 않습니다. – tadman