Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重建阵列_Php_Wordpress_Laravel_Eloquent - Fatal编程技术网

Php 重建阵列

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。所以我

我正在开发一个从Wordpress数据库中获取内容并以不同方式处理的工具。我所做的一件事是构建一个名为
$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对象属性。这让我朝着正确的方向前进,我找到了一个有效的解决方案!原稿已编辑。