PHP에서는 트리를 어캐 만드나요?

temo의 이미지

C로는 어렵지 않은데 PHP로 하려니 좀 적응이 --;; 안되네요..

만약에 아래와 같은 데이터가 있으면

Quote:

abcc
abka
acdb
acdc
...
...
...

a---b---c---c
|....|---k---a
|
|---c---d---b
...........|---c

위와 같은 데이터 구조가 나오도록 말이에요..ㅡ.ㅡ 고수님들 부탁 드리겠습니다.

익명 사용자의 이미지

temo wrote:
C로는 어렵지 않은데 PHP로 하려니 좀 적응이 --;; 안되네요..

만약에 아래와 같은 데이터가 있으면

Quote:

abcc
abka
acdb
acdc
...
...
...

a---b---c---c
|....|---k---a
|
|---c---d---b
...........|---c

위와 같은 데이터 구조가 나오도록 말이에요..ㅡ.ㅡ 고수님들 부탁 드리겠습니다.

코드

<?
$temp = array(
    "a" => array(
        "b" => array(
            "c" => array("c"),
            "k" => array("a")
        )
    ),
    "c" => array(
        "d" => array("b", "c")
    )
);

var_dump($temp);
?>

결과

X-Powered-By: PHP/4.2.3
Content-type: text/html

array(2) {
  ["a"]=>
  array(1) {
    ["b"]=>
    array(2) {
      ["c"]=>
      array(1) {
        [0]=>
        string(1) "c"
      }
      ["k"]=>
      array(1) {
        [0]=>
        string(1) "a"
      }
    }
  }
  ["c"]=>
  array(1) {
    ["d"]=>
    array(2) {
      [0]=>
      string(1) "b"
      [1]=>
      string(1) "c"
    }
  }
}

^^;;

후다다닥 =3=3=3

익명 사용자의 이미지

^^;;; 우이씨.. 장난치시지 말구용

lacovnk의 이미지

배열의 index가 자유롭고, 자료형도 자유롭기 때문에 저런 방법을 종종 씁니다. (물론 나중에 헷갈려서 고생합니다만..)

저게 아니라면 class를 쓰셔도..

class node
{
        var $child;
        var $data;
}
$a = new node();
$a->data = "hello";
$b = new node();
$b->child = $a;
print $b->child->data;

결과
Quote:
hello

참고로 생성자도 있으니 잘 쓰시면 됩니다. 오버로딩은 안되던 것 같고.. 기본값을 지정해줄 수 있으니 그거라도 잘 사용을;;