PHP를 사용하면 일반 텍스트 목록을 연관 배열로 변환하는 가장 좋은 방법은 무엇일까요?
일반 텍스트 목록 구조는 다음과 같습니다.
Item 1
Item 1 > Sub Item 1.1
Item 1 > Sub Item 1.2
Item 2
Item 2 > Sub Item 2.1 > Sub Sub Item 2.1.1
Item 2 > Sub Item 2.1 > Sub Sub Item 2.1.2
Item 2 > Sub Item 2.1 > Sub Sub Item 2.1.2 > Sub Sub Sub Item 2.1.2.1
Item 2 > Sub Item 2.2 > Sub Sub Item 2.2.1
Item 2 > Sub Item 2.2 > Sub Sub Item 2.2.2
Item 3
Item 4
Item 4 > Sub Item 4.1
기능 / 방법은 특정 깊이로 제한되지 않습니다.
원하는 배열은 다음과 같습니다.
$array['Item 1']['Sub Item 1.1'];
$array['Item 1']['Sub Item 1.2'];
$array['Item 2']['Sub Item 2.1'];
$array['Item 2']['Sub Item 2.1']['Sub Sub Item 2.1.1'];
$array['Item 2']['Sub Item 2.1']['Sub Sub Item 2.1.2'];
$array['Item 2']['Sub Item 2.1']['Sub Sub Item 2.1.2']['Sub Sub Sub Item 2.1.2.1'];
$array['Item 2']['Sub Item 2.2']['Sub Sub Item 2.2.1'];
$array['Item 2']['Sub Item 2.2']['Sub Sub Item 2.2.2'];
$array['Item 3'];
$array['Item 4'];
$array['Item 4']['Sub Item 4.1'];
이것이 채택하기에 가장 좋은 어레이 구조인지 확실하지 않습니다.
UI 측면에서 ...
배열은 jQuery.ajax를 통해 일련의 하이라 찰 드롭 다운 목록을 채우는 데 사용됩니다. 여기서 자식 목록의 내용은 부모 선택에 따라 달라집니다.
사용자가 항목 2를 선택하면 하위 항목과 함께 새 목록이 나타납니다. 예를 들어 하위 하위 항목 2.1.2를 선택하면 하위 하위 항목 2.1.2.1이 유일한 옵션 인 세 번째 목록이 나타납니다.
모든 jQuery 작업을 수행 할 수 있습니다. 그저 두통을 일으키는 PHP 기능뿐입니다!
함수가 작성되는 방식에 영향을 미치는 경우 배열로 무엇을하고자하는지에 대한 설명을 포함했습니다.
사용 explode
, 참조 할당 및 array_shift
:
$input = "Item 1
Item 1 > Sub Item 1.1
...
Item 4 > Sub Item 4.1";
$lines = explode("\n", $input);
$out = array();
foreach ($lines as $line) {
$parts = explode(" > ", $line);
$ref = &$out;
while (count($parts) > 0) {
if (isset($ref[$parts[0]]) === false) {
$ref[$parts[0]] = array();
}
$ref = &$ref[$parts[0]];
array_shift($parts);
}
}
echo "<pre>";
print_r($out);
올바른 출력을 제공하는 것 같습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다