質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

545閲覧

思ったように連想配列にデータを追加できません。

haruatu

総合スコア89

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/01/18 09:04

編集2022/01/19 16:27

phpのLaravelです。

下のコードのようにfor構文を使って連想配列にデータを追加したいのですが、どうやっても下の配列のようになってしまいます。本当は”Item”の配列に追加したいのですが、どうしたらいいのでしょうか?

修正内容:一番下の連想配列は楽天の[楽天ブックス書籍検索API]を下の$rakutenn_url~$rakutenn_booksのコードで連想配列にしたもの(三つ目)に、真ん中のfor文でデータを追加したものをdd()で確認したものとなっています。
ここで、質問の「”Item”の配列に追加したい」というのは三つ目の連想配列のように[title]や[author]などが表示されている、["Item"]下の配列にデータを追加したいという事です。

追記:べつのAPIのデータと一緒に同じテーブルにデータを保存するために、書式を統一するのが目的でこんなことをしています。

//楽天ブックス書籍検索 $rakutenn_url = 'https://app.rakuten.co.jp/services/api/BooksBook/Search/20170404?applicationId=アプリid'; $rakutenn_response = $client->request( 'GET', $rakutenn_url, ); $rakutenn_json = $rakutenn_response->getBody()->getContents(); $rakutenn_booklist= json_decode($rakutenn_json,true); $rakutenn_books = $rakutenn_booklist['Items'];
for($i=0;$i<count($rakutenn_books);$i++) { //$rakutenn_books[$i] += ["guid" => null]; //$rakutenn_books[$i] += ["link" => null]; //$rakutenn_books[$i] += ["category" => null]; array_push($bookbook,$rakutenn_books[$i]); }
array:30 [▼ 0 => array:1 [▼ "Item" => array:30 [▼ "affiliateUrl" => "" "author" => "あしべゆうほ/池田悦子" "authorKana" => "アシベユウホ/イケダエツコ" "availability" => "1" "booksGenreId" => "001001006010" "chirayomiUrl" => "" "contents" => "" "discountPrice" => 0 "discountRate" => 0 "isbn" => "9784253070263" "itemCaption" => "" "itemPrice" => 880 "itemUrl" => "https://books.rakuten.co.jp/rb/896646/" "largeImageUrl" => "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0263/9784253070263_1_3.jpg?_ex=200x200" "limitedFlag" => 0 "listPrice" => 0 "mediumImageUrl" => "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0263/9784253070263_1_3.jpg?_ex=120x120" "postageFlag" => 2 "publisherName" => "秋田書店" "reviewAverage" => "4.5" "reviewCount" => 6 "salesDate" => "1990年11月02日" "seriesName" => "プリンセス・コミックス" "seriesNameKana" => "プリンセスコミックス" "size" => "コミック" "smallImageUrl" => "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0263/9784253070263_1_3.jpg?_ex=64x64" "subTitle" => "" "subTitleKana" => "" "title" => "悪魔の花嫁 17" "titleKana" => "デイモスノハナヨメ" ] ] 1 => array:1 [▶] 2 => array:1 [▶] 3 => array:1 [▶] 4 => array:1 [▶] 5 => array:1 [▶] 6 => array:1 [▶] 7 => array:1 [▶] 8 => array:1 [▶] 9 => array:1 [▶] 10 => array:1 [▶] 11 => array:1 [▶] 12 => array:1 [▶] 13 => array:1 [▶] 14 => array:1 [▶] 15 => array:1 [▶] 16 => array:1 [▶] 17 => array:1 [▶] 18 => array:1 [▶] 19 => array:1 [▶] 20 => array:1 [▶] 21 => array:1 [▶] 22 => array:1 [▶] 23 => array:1 [▶] 24 => array:1 [▶] 25 => array:1 [▶] 26 => array:1 [▶] 27 => array:1 [▶] 28 => array:1 [▶] 29 => array:1 [▶] ]
array:30 [▼ 0 => array:4 [▼ "Item" => array:30 [▶] "guid" => null "link" => null "category" => null ] 1 => array:4 [▶] 2 => array:4 [▶] 3 => array:4 [▶] 4 => array:4 [▶] 5 => array:4 [▶] 6 => array:4 [▶] 7 => array:4 [▶] 8 => array:4 [▶] 9 => array:4 [▶] 10 => array:4 [▶] 11 => array:4 [▶] 12 => array:4 [▶] 13 => array:4 [▶] 14 => array:4 [▶] 15 => array:4 [▶] 16 => array:4 [▶] 17 => array:4 [▶] 18 => array:4 [▶] 19 => array:4 [▶] 20 => array:4 [▶] 21 => array:4 [▶] 22 => array:4 [▶] 23 => array:4 [▶] 24 => array:4 [▶] 25 => array:4 [▶] 26 => array:4 [▶] 27 => array:4 [▶] 28 => array:4 [▶] 29 => array:4 [▶] ]

追記:解決しました。下に欲しかった結果と何をしたかを載せます。

結果:

array:30 [▼ 0 => array:33 [▼ "affiliateUrl" => "" "author" => "" "authorKana" => "" "availability" => "1" "booksGenreId" => "001010010002/001028001013/001028001" "chirayomiUrl" => "" "contents" => "" "discountPrice" => 0 "discountRate" => 0 "isbn" => "9784299019943" "itemCaption" => "" "itemPrice" => 1100 "itemUrl" => "https://books.rakuten.co.jp/rb/16796583/" "largeImageUrl" => "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9943/9784299019943_1_3.jpg?_ex=200x200" "limitedFlag" => 0 "listPrice" => 0 "mediumImageUrl" => "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9943/9784299019943_1_3.jpg?_ex=120x120" "postageFlag" => 2 "publisherName" => "宝島社" "reviewAverage" => "3.0" "reviewCount" => 1 "salesDate" => "2021年08月23日" "seriesName" => "TJMOOK" "seriesNameKana" => "ティージェイムック" "size" => "ムックその他" "smallImageUrl" => "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9943/9784299019943_1_3.jpg?_ex=64x64" "subTitle" => "" "subTitleKana" => "" "title" => "ヒトは120歳まで生きられる! 遺伝子のヒミツ" "titleKana" => "ヒトハヒャクニジュッサイマデイキラレルイデンシノヒミツ" "guid" => null "link" => null "category" => null ] 1 => array:33 [▶] 2 => array:33 [▶] 3 => array:33 [▶] 4 => array:33 [▶] 5 => array:33 [▶] 6 => array:33 [▶] 7 => array:33 [▶] 8 => array:33 [▶] 9 => array:33 [▶] 10 => array:33 [▶] 11 => array:33 [▶] 12 => array:33 [▶] 13 => array:33 [▶] 14 => array:33 [▶] 15 => array:33 [▶] 16 => array:33 [▶] 17 => array:33 [▶] 18 => array:33 [▶] 19 => array:33 [▶] 20 => array:33 [▶] 21 => array:33 [▶] 22 => array:33 [▶] 23 => array:33 [▶] 24 => array:33 [▶] 25 => array:33 [▶] 26 => array:33 [▶] 27 => array:33 [▶] 28 => array:33 [▶] 29 => array:33 [▶] ]

上のと比べるとわかりやすいですが、
"guid" => null
"link" => null
"category" => null
のデータが追加される位置をこういう風に変更したかったという事です。

解決方法:for文を下のように書き換えると事で解決しました。

for($i=0;$i<count($rakutenn_books);$i++) { $rakutenn_books[$i]['Item'] += ["guid" => null]; $rakutenn_books[$i]['Item'] += ["link" => null]; $rakutenn_books[$i]['Item'] += ["category" => null]; array_push($bookbook,$rakutenn_books[$i]['Item']); }

変更点は[$i]の隣に['Item']を追加したことです。

分かりにくい質問文ですみませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/01/18 10:00

回答者がすぐ試せるような、具体的なサンプルデータを示してもらうことは可能でしょうか? 元のデータがどうなっていて、どういう構造の結果がほしいのかが、質問文からはわかりません。デバッグ的にvar_export($hoge); を駆使しても良いでしょう。
haruatu

2022/01/18 20:18

すいません、サンプルデータがどんなのが良いのかわからないまま編集したのですが、これで大丈夫でしょうか?
退会済みユーザー

退会済みユーザー

2022/01/19 00:08

齟齬がないように、元にするデータはこれです、こういう形にしたいです、って文言も添えてほしいです。ほしい形は(加工する方法がわからないのだから)手編集で構いません。あと ver_export() で出力してもらえると、phpコードにコピペできる形式で出力してくれるので再現する際に大変ありがたいのです。var_dump() で出力すると、phpコードで使える形に手で直す際にミスが生じやすいので。
haruatu

2022/01/19 07:25 編集

すいません、解決しました。 解決方法と欲しかった結果は質問文に追記しておきました。 そして、一つお聞きしたいのですが、var_export()のことに関してなんですが、var_export()で出力して出てきた画面をこちらの質問文に乗せれば良かったのでしょうか?
guest

回答1

0

自己解決

解決方法:

for($i=0;$i<count($rakutenn_books);$i++) { $rakutenn_books[$i] += ["guid" => null]; $rakutenn_books[$i] += ["link" => null]; $rakutenn_books[$i] += ["category" => null]; array_push($bookbook,$rakutenn_books[$i]); }

for($i=0;$i<count($rakutenn_books);$i++) { $rakutenn_books[$i]['Item'] += ["guid" => null]; $rakutenn_books[$i]['Item'] += ["link" => null]; $rakutenn_books[$i]['Item'] += ["category" => null]; array_push($bookbook,$rakutenn_books[$i]['Item']); }

に変更しました。

投稿2022/01/19 07:27

haruatu

総合スコア89

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問