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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

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

Q&A

解決済

2回答

489閲覧

PHP JSON あとから配列をまとめたい

qwerp

総合スコア8

PHP

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

0グッド

0クリップ

投稿2021/06/17 17:05

編集2021/06/17 17:09
<?php $str='{ "id": { "is": "aaa"},"id2": { "is2": "bbb"}}'; $str = json_decode($str, true); ?>

上記はこのような配列になると思います

{ "id": { "is": "aaa" }, "id2": { "is2": "bbb" } }

これをboxにある、idとid2という形にあとから紐付けしたいです

"box":{ "id": { "is": "aaa" }, "id2": { "is2": "bbb" } }

理想はこのような形でしょうか(上記の形式があってるかはわかりませんが、box["id"]["is"]で中身にアクセスできるような形です)
どのようにしたらあとからboxにidとid2を入れることができますでしょうか
array_push等やってみましたが、全然わかりません
詳しい方教えて下さい

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

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

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

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

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

guest

回答2

0

文字列のまま加工した回答を付けときます。
あまり使う機会は無いと思いますが。

php

1<?php 2$str = '{ "id": { "is": "aaa"},"id2": { "is2": "bbb"}}'; 3$str = '{"box":'.$str."}"; 4$array = json_decode($str, true); 5echo $array["box"]["id"]["is"];//aaa

投稿2021/06/18 03:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

自己解決

自己解決しました
ありがとうございました

$p["box"]=$str;
このようにしたらboxに入れることができました

投稿2021/06/17 18:33

編集2021/06/18 01:06
qwerp

総合スコア8

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

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

kei344

2021/06/17 18:34

【質問をした後に自己解決してしまった --- ヘルプ|teratail(テラテイル)】 https://teratail.com/help#resolve-myself > 後から読む人のためにも、具体的な解決手順を記載してください。
退会済みユーザー

退会済みユーザー

2021/06/17 20:32

質問を見る限り、json を誤解していると思います。 php でいうところの json は文字列で、配列ではありません。 自己回答も仕様を満たしているように見えないので再度検証してみては?
qwerp

2021/06/18 01:08 編集

strという文字列をjson_decodeで配列にし、$p["box"]にその配列全体を入れる var_dumpで確認もしてますが、 どこが配列ではないのでしょうか? <?php $p=[]; $str='{ "id": { "is": "aaa"},"id2": { "is2": "bbb"}}'; $str = json_decode($str, true); $p["box"]=$str; var_dump($p["box"]["id"]);// array(1) { ["is"]=> string(3) "aaa" } 参照できている ?>
退会済みユーザー

退会済みユーザー

2021/06/18 01:55

ある時点までの $str と、ある時点以降の $str で、扱っているデータが変わっていることが混乱を招きますので注意が必要です。 先の $str には、JSON文字列が入っていますが、 json_decode()で加工した結果を同じ $str に入れてしまうと、変数名は文字列リテラルが入っていそうなのに、中身はJSONをデコードした配列データっていうあべこべさ。 動けばいい、わかってるんだからいい、という考え方もありますが、 第三者に見てもらう評価してもらうときに、誤解が生じやすい書き方は良くないです。
退会済みユーザー

退会済みユーザー

2021/06/18 03:30

やはり誤解してましたね^^; せっかくなので文字列であることを活かした回答を付けときます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問