Php 重建阵列
我正在开发一个从Wordpress数据库中获取内容并以不同方式处理的工具。我所做的一件事是构建一个名为Php 重建阵列,php,wordpress,laravel,eloquent,Php,Wordpress,Laravel,Eloquent,我正在开发一个从Wordpress数据库中获取内容并以不同方式处理的工具。我所做的一件事是构建一个名为$category的简单数组,其中包含wp\u terms的内容,其中term\u id= 不幸的是,它没有包含我想要的所有内容,因此我还使用wp\u term\u taxonomy中的相关细节填充了$category->taxonomy。这是一对一的关系,所以没有问题 然而,我在wp\u termsmeta中也有一些我需要的东西,其中有一个一对多的关系,多行具有相同的term\u id。所以我
$category
的简单数组,其中包含wp\u terms的内容,其中term\u id=
不幸的是,它没有包含我想要的所有内容,因此我还使用wp\u term\u taxonomy中的相关细节填充了$category->taxonomy
。这是一对一的关系,所以没有问题
然而,我在wp\u termsmeta
中也有一些我需要的东西,其中有一个一对多的关系,多行具有相同的term\u id
。所以我得到的是这样的东西:
{
"term_id" : 9813,
"name" : "Who's Who",
"slug" : "ww",
"term_group" : 0,
"taxonomy" :
{
"term_taxonomy_id" : 9832,
"term_id" : 9813,
"taxonomy" : "category",
"description" : "Who's Who is the CSICON Network's very own show about Doctor Who!",
"parent" : 0,
"count" : 58
},
"meta" : [
{
"meta_id" : 8490,
"terms_id" : 9813,
"meta_key" : "hosts",
"meta_value" : "1, 2"
},
{
"meta_id" : 8492,
"terms_id" : 9813,
"meta_key" : "thumbnail",
"meta_value" : "http://csicon.fm/wp-content/uploads/2015/12/ww_4-248x248.jpg"
}
]
}
我们从$category
中的wp\u terms
中获得了term\u id
、name
、slug
和term\u group
,然后是$category->taxonomy
中的一堆东西,然后是$categegory->meta code>下的一堆东西
现在来看问题
如果我想访问(比如)缩略图URL,我必须向下遍历到$category->meta[1]->meta\u value
,但我不能总是知道它将是[1]
。对于其他类别,它可能是[0]
或[2]
。我所能确定的是,只有[n]
具有meta\u key=thumbnail
理想情况下,我希望有一种很好的方法来迭代meta
,并简单地将每个meta\u键的值保存为$category
下的“real”键,这样$category->thumbnail
将返回当前存储在那里的meta\u值
。。。但是我会用一种可靠的方法来解决这个问题,为一个特定的meta\u键
找到正确的meta\u值
有什么想法吗?:)
已解决
谢谢!而不是$category['meta']=category::find($term_id)->catMeta代码>,我现在运行下面的代码,它正是我想要的
$metaTemp = Category::find($term_id)->catMeta;
$metaTable = json_decode(json_encode($metaTemp), FALSE);
foreach($metaTable as $key => $value) {
$category[$value->meta_key] = $value->meta_value;
}
$metaTemp = Category::find($term_id)->catMeta;
$metaTable = json_decode(json_encode($metaTemp), FALSE);
foreach($metaTable as $key => $value) {
$category[$value->meta_key] = $value->meta_value;
}
我建议将meta从一个数组转换为一个对象,该对象的属性是meta_键。所以你得到了这个结构:
{
"term_id" : 9813,
"meta" : {
"hosts" : {
"meta_id" : 8490,
"terms_id" : 9813,
"meta_key" : "hosts",
"meta_value" : "1, 2"
},
"thumbnail" : {
"meta_id" : 8492,
"terms_id" : 9813,
"meta_key" : "thumbnail",
"meta_value" : "http://csicon.fm/wp-content/uploads/2015/12/ww_4-248x248.jpg"
}
}
}
因此,通过这种方式搜索正确的元将在时间上具有恒定成本,而不是线性成本
您的客户会像这样搜索它:$category->meta->hosts
谢谢!而不是$category['meta']=category::find($term_id)->catMeta代码>,我现在运行下面的代码,它正是我想要的
$metaTemp = Category::find($term_id)->catMeta;
$metaTable = json_decode(json_encode($metaTemp), FALSE);
foreach($metaTable as $key => $value) {
$category[$value->meta_key] = $value->meta_value;
}
$metaTemp = Category::find($term_id)->catMeta;
$metaTable = json_decode(json_encode($metaTemp), FALSE);
foreach($metaTable as $key => $value) {
$category[$value->meta_key] = $value->meta_value;
}
如果有多个条目可以共享一个meta_键,那么您将使用数组而不是对象作为meta对象属性。这让我朝着正确的方向前进,我找到了一个有效的解决方案!原稿已编辑。