2013-02-15 3 views
0

2 차원 php 배열을 이해하는 데 어려움이 있습니다. 데이터베이스에 URL을 저장하는 테이블이 1에서 N까지의 관계로 태그를 저장하는 테이블과 관련되어 있습니다 이 :PHP-SQL 배열 구조

URL   
ID ---> URL_ID 
      ID 
      TAG 

나는이 구조를 가져오고 PHP 클래스에 저장하기 위해 노력하고있어,하지만 난

class Url extends databaseobject{ 

    $list = [ 

     "url" =>, 
     "tags" => [] 


    ]; 
           } 

누군가가 내 데이터베이스를 저장하는 올바른 구조를 구축 할 수 있도록 할 수

이해하지 않는 한 ?

답변

0

여기에 구조

$list = array(
      1 => array(
      'URL_ID' => 1 
      'ID' => 1 
      'TAG' => 'hiiiii' 
     ), 
      2 => array(
      'URL_ID' => 1 
      'ID' => 2 
      'TAG' => 'hello' 
     ), 
     ); 
+0

각 url에는 여러 개의 태그가 있습니다. 즉, tag => 또한 배열입니까? 난 mysql 쿼리 후 dinamically 그것을 채울 필요가 –

+0

나는 응답 $ 목록이 모든 "태그"레코드의 배열, 그것이 속한 URL에 대한 참조와 함께 생각합니다. 두 번째 배열 $ URL_List = array (1 => "http : // someUrl", 2 => "http : // someOtherUrl")이 있다고 가정합니다. – AndrewP

1

입니다 그것은해야이

 
    db_url   db_tags 
id url   id url_id tag 
|---------------------| 
class UrlTags 
{ 
    public $url_id; 
    public $url; 
    public $tags = array(); 
} 

같은 그래서 당신은 해당 태그의 URL 목록을 저장해야 할 때.

$url_tags = new UrlTags(); 

$url_tags->$id = 1; 
$url_tags->$url = 'http://www.example.com'; 
$url_tags->$tags[0] = 'zero'; 
$url_tags->$tags[1] = 'one'; 
$url_tags->$tags[2] = 'two'; 

또는 더 많은 객체 지향 스타일

: 당신은 두 개의 테이블이 결합 된 결과 세트 반복되어 있습니다 가정

class Url 
{ 
    public $url_id; 
    public $url; 
    public $tags = array(); 
} 

class Tags 
{ 
    public $tag_id; 
    public $tag_name; 
} 

$url_list = new Url(); 

$url_list->$id = 1; 
$url_list->$url = 'http://www.example.com'; 

$tag = new Tags(); 
$tag->$tag_id = 1; 
$tag->$tag_name = 'one'; 

//Now store the tags 
$url_list->$tags[0] = $tag; 

$tag = new Tags(); 
$tag->$tag_id = 2; 
$tag->$tag_name = 'two'; 

$url_list->$tags[1] = $tag; 
0

, 결과 집합의 각각의 행은 무언가를 찾습니다 다음과 같이하십시오 :

또한 사용하는 어댑터가 어떤 종류의 반복 가능한 결과 세트를 생성한다고 가정하면 itera 테 (이 당신이 사용중인 어댑터 모른 채 의사 codey의 종류) :

$list = array(); 
while($arr = $your_adapter's_current_row){ 
    if(empty($list[$arr[$url_id]]) { 
     $list = array(
      'URL_ID' => $url_id, 
      'URL' => $url, 
      'TAGS' => array() 
     } 
     $list[$arr[$url_id]]['TAGS'][$tag_id] = $tag; 
} 

그런 다음 클래스의 속성으로 배열을 추가 할 수 있습니다.