[英]PHP-SQL array structure
我在理解二维php数组时遇到麻烦,在我的数据库中,我有一个存储URL的表,它与另一个以1对N的关系存储标签的表相关,这些表如下所示:
URL
ID ---> URL_ID
ID
TAG
我正在尝试获取此结构并将其存储在PHP类中,但由于我不明白
class Url extends databaseobject{
$list = [
"url" =>,
"tags" => []
];
}
有人可以帮助我建立正确的结构来存储数据库吗?
应该是这样的
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;
这是结构
$list = array(
1 => array(
'URL_ID' => 1
'ID' => 1
'TAG' => 'hiiiii'
),
2 => array(
'URL_ID' => 1
'ID' => 2
'TAG' => 'hello'
),
);
假设您要遍历连接两个表的结果集,那么结果集中的每一行看起来都像这样:
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;
}
然后,您可以将数组添加为类的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.