【发布时间】:2016-07-19 08:55:27
【问题描述】:
我继承了项目,数据结构有点乱。基本上,用户输入的数据是非层次结构的(“pages”不是“book title”的属性,但两者都只是没有任何关系的值)。
现在我想创建一个更有序的结构,即我想按作者列出书籍并按标题列出书籍详细信息。
foreach($items as $item){
$books[$item->author][$item->title] = array(
"pages" => $item->details->pages->value,
"published" => $item->details->year->value,
"genres" => $item->details->genres->value
);
}
我想将键分配给前两个数组级别。我试过$books["author" => $item->author]["title" => $item->title],但收到一条错误消息。
如何在这种情况下分配键,而不必通过多个 foreach 循环运行整个事情?
编辑:关于对象结构的注释:
网站在 CMS 上运行,客户使用插件构建了自己的输入表单。 所有数据都保存在博客文章中。这些博文有默认输入字段($item->author 和 $item->title),然后有一个自定义字段选项,客户端可以在其中输入所有详细信息,即 $item->details->pages->value(值为在该字段的输入值中)。
所需的结构是这样的:
- 书籍
- 作者
- 标题
- 页
- 年
- 流派(数组)
- 标题
- 页
- 年
- 流派(数组)
- 标题
- 页
- 年
- 流派(数组)
- 标题
- 作者
- 标题
- 页
- 年
- 流派(数组)
- 标题
- 页
- 年
- 流派(数组)
- 标题
- 页
- 年
- 流派(数组)
- 标题
- 作者
这将允许我遍历整个 $books 数组,为每个作者创建一个并创建一个表,其中列出了一个 $title 以及每行的详细信息。
【问题讨论】:
-
错误信息是什么?
-
你试过 $item->author->value 和 $item->title->value... 在 $item 对象上使用 var_dump 来查看它的结构。
-
我很难理解您寻求的确切转换。在您的问题中,显示您当前结构的摘录,以及最终结构的预期结果。
-
让我们保持简单并从以下开始:期望的结果数据结构是什么?使用不起作用的代码示例并不能说明很多。
-
我更新了描述以使请求更加具体。
标签: php arrays associative-array