0

我无法理解二维 php 数组,在我的数据库中,我有一个存储 URL 的表,它与另一个通过 1 到 N 关系存储标签的表相关,这些表如下所示:

URL         
ID    --->  URL_ID
            ID
            TAG

我正在尝试获取此结构并将其存储在 PHP 类中,但我不明白

class Url extends databaseobject{

    $list = [

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


    ];
                                }

有人可以帮我建立正确的结构来存储我的数据库吗?

4

3 回答 3

1

它应该是这样的

   db_url            db_tags
id url id url_id 标签
 |----------------------|
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;
于 2013-02-15T05:04:56.383 回答
0

假设您正在迭代两个表连接的结果集,因此结果集中的每一行看起来像这样:

url, url_id, tag, tag_id

还假设您使用的任何适配器都会创建某种可迭代的结果集,然后在您迭代时(这是一种伪代码,不知道您正在使用什么适配器):

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

然后,您可以将数组添加为您的类的属性。

于 2013-02-15T05:08:45.073 回答
0

这是结构

$list  = array(
          1 => array(
            'URL_ID' => 1
            'ID' => 1
            'TAG' => 'hiiiii'
          ),  
          2 => array(
            'URL_ID' => 1
            'ID' => 2
            'TAG' => 'hello'
          ),
       ); 
于 2013-02-15T04:09:53.510 回答