2013-02-15 55 views
0

我無法理解二維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填充 – 2013-02-15 04:12:14

+0

我認爲響應$ list是所有「tag」記錄的數組,並且引用了它所屬的URL。我假設會有第二個數組,$ URL_List = array(1 =>「http:// someUrl」,2 =>「http:// someOtherUrl」)... – AndrewP 2013-02-15 04:40:29

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

假設你正在遍歷一個結果集,其中兩個表的連接,所以在結果集中的每一行看起來是像這樣:

url, url_id, tag, tag_id 

還假定,無論適配器您正在使用造成某種可重複的結果集,那麼你伊特拉te(這是一種僞代碼,不知道你在用什麼適配器):

$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; 
} 

然後,你可以添加數組作爲你的類的屬性。