私はプロジェクトを継承し、データ構造はちょっと乱雑です。基本的に、ユーザーはデータを入力し、それは非階層的に構造化されています(「ページ」は「ブックタイトル」のプロパティではありませんが、どちらも関係のない単なる値です)。php:マルチレベル配列を作成する際の配列キーの割り当て
ここでは、より秩序のある構造を作成したいと思います。つまり、書籍を著者別に、書籍の詳細をタイトルで表示したいとします。
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
);
}
最初の2つの配列レベルにキーを割り当てたいと思います。 $books["author" => $item->author]["title" => $item->title]
を試しましたが、エラーメッセージが表示されました。
このような状況でキーを割り当てるには、複数のforeachループですべてを実行する必要はありません。
EDIT:オブジェクトの構造上の注意:
サイトはCMS上で実行され、クライアントはプラグインで自分の入力フォームを構築しました。 すべてのデータはブログポストに保存されます。これらのblogpostsには、デフォルトの入力フィールド($ item-> authorと$ item-> title)があり、クライアントがすべての詳細を入力するカスタムフィールドオプションがあります。例えば、$ item-> details-> pages-> valueそのフィールドの入力値に)。
所望の構造は、このようなものになるだろう:
- ブック
- 著者
- タイトル
- ページ
- 年
- 本のジャンル(配列)
- タイトル
- ページ
- 年
- ジャンル(配列)
- タイトル
- ページ
- 年 の
- ジャンル(配列)
- タイトル
- 著者
- タイトル
- ページ
- 年
- ジャンル(配列)
- タイトル
- ページ
- 年
- ジャンル(配列)
- タイトル
- ページ
- 年
- ジャンル(配列)
- タイトル
- 著者
これは、全体の$書籍配列をループに私を許可する各著者のために作成し、行ごとに詳細を1つの$のタイトルを一覧表示し、テーブルを作成します。
エラーメッセージは何ですか? – splash58
あなたは$ item-> author-> valueと$ item-> title-> valueを試してみましたか?$ itemオブジェクトのvar_dumpを使ってその構造を見てください。 –
私はあなたが求める正確な変換を理解するのに苦労しています。あなたの質問では、現在の構造の抜粋と最終的な構造の望ましい結果を表示してください。 – BeetleJuice