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

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

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

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

PHP

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

解決済

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

haruatu
haruatu

総合スコア86

Laravel 6

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

PHP

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

1回答

0評価

0クリップ

246閲覧

投稿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']を追加したことです。

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

退会済みユーザー

退会済みユーザー

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()で出力して出てきた画面をこちらの質問文に乗せれば良かったのでしょうか?

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Laravel 6

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

PHP

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