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

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

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

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

Q&A

解決済

1回答

826閲覧

PHPにてレスポンスデータから必要な情報だけを取り出す方法を教えて下さい。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2021/04/29 07:24

編集2021/04/30 00:59

PHPについては Hello World レベルの超初心者です。
サンプルソースからデータを取り出す方法を教えて下さい。

以下サンプルソース

PHP

1print "[ResponseData]\n".trim($response_body);

実行結果
[ResponseData] {"devices":[{"num":"1","serial":"ABCDEFG","model":"","name":"","battery":"5","rssi":"","time_diff":"540","std_bias":"0","dst_bias":"60","unixtime":"1619663634","channel":[{"num":"1","name":"Ch.1","value":"22.7","unit":"C"},{"num":"2","name":"Ch.2","value":"22.8","unit":"C"}],"baseunit":{"serial":"ABCDEFG","model":"","name":""},"group":{"num":"0","name":"GROUP1"}}]}

この$response_bodyからCh.1のvalue=22.7とCh.2のvalue22.8を取り出す方法を教えて下さい。

追記
>こんなにたくさんの文字を打って質問してる間に幾つもの優良記事を見つけられる、無駄な労力かけてます。

打ってないです。コピペしてるだけです。
デコードしたらこんな感じになりました。
Array ( [devices] => Array ( [0] => Array ( [num] => 1 [serial] => ABCDEFG [model] => ***** [name] => ***** [battery] => 5 [rssi] => [time_diff] => 540 [std_bias] => 0 [dst_bias] => 60 [unixtime] => 1619663634 [channel] => Array ( [0] => Array ( [num] => 1 [name] => Ch.1 [value] => 22.7 [unit] => C ) [1] => Array ( [num] => 2 [name] => Ch.2 [value] => 22.8 [unit] => C ) ) [baseunit] => Array ( [serial] => ABCDEFG [model] => ******* [name] => ******** ) [group] => Array ( [num] => 0 [name] => GROUP1 ) ) ) )

次はどうすれば良いでしょうか?

PHP

1print("\n".$response_decode["devices"][0]["serial"]); 2print("\n".$response_decode["devices"][0]["channel"][0]["name"]); 3print("\n".$response_decode["devices"][0]["channel"][0]["value"]); 4print("\n".$response_decode["devices"][0]["channel"][1]["name"]); 5print("\n".$response_decode["devices"][0]["channel"][1]["value"]);

結果
ABCDEFG Ch.1 22.7 Ch.2 22.8

追記
この質問にケチを付けた人へ、他人に仕事させている典型的な質問を見つけたので紹介します。

https://teratail.com/questions/335843

↑他人に仕事をさせる質問とはこういうことです。当質問のように、どんな検索キーワードで検索すればいいか見当もつかない初心者が日本語で説明して、答えを知っている人が1秒で答える。これこそが質問サイトの理想的なあり方です。

更に追記
質問への追加修正依頼をしている人がいるけど、ちゃんと答えを知っている人が質問を読めば追加修正など無くても一瞬で答えられる質問の例を見つけました。

https://teratail.com/questions/335849

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

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

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

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

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

m.ts10806

2021/04/29 07:59 編集

> Hello World レベルの超初心者です。 には難しいのでもっと入門レベルからやってください。 「JSONだ」と分かってるならいくらでも調べようがありますね。 検索を利用できない特異な状況下にあるなら書いたほうがいいです。 こんなにたくさんの文字を打って質問してる間に幾つもの優良記事を見つけられる、無駄な労力かけてます。
m.ts10806

2021/04/29 08:12

>PHPについては Hello World レベルの超初心者です。 サンプルソースからデータを取り出す方法を教えて下さい。 以下サンプルソース --------------------- ↑じゃあこれどこからコピペしてきました?
退会済みユーザー

退会済みユーザー

2021/04/29 08:15

たくさんじゃないです。
m.ts10806

2021/04/29 08:20 編集

ヒントを得るために打つ検索キーワードの文字数と比べたら非常に多いです。 「こんなに打つ暇あれば検索すればいいのに」という指摘ですよ。 見つけたとしても「Hello World レベルの超初心者」には理解は無理なので最初のコメントに書いています。入門レベルからやってください。
退会済みユーザー

退会済みユーザー

2021/04/29 08:49

検索するより100倍早く解決しました。
m.ts10806

2021/04/29 09:46

10分で済むことに1時間かけていて、ですか? 日本語が通じていないようだ。
退会済みユーザー

退会済みユーザー

2021/04/29 10:20

その間他の仕事してたし、自分で調べてたらまる1日フル稼働しても解決してないよ。
退会済みユーザー

退会済みユーザー

2021/04/29 10:29

多分、自分でやってたら文字列編集する方法を探してたと思う。 Hello World レベルの超初心者だと忘れてない?
m.ts10806

2021/04/29 10:50

ですから「もっと入門レベルからやってください。」と最初に書いてます。 日本語が通じていないようだ。
m.ts10806

2021/04/29 10:51 編集

ここは他人に仕事をさせる場所ではないので。 何の仕事か知らないけど、PHPに関係なく別の言語が入門レベルでもできるなら調べた方が早い。
退会済みユーザー

退会済みユーザー

2021/04/29 10:51

そんなことしてたら目的を達成するのがいつになることやら…
退会済みユーザー

退会済みユーザー

2021/04/29 10:54

ベストアンサーの人の回答見ましたか? 他人に仕事させたレベルのことはしていません。
m.ts10806

2021/04/29 10:54

そんなこと赤の他人が知ったこっちゃない。 ここは他人に仕事をさせる場所ではないので。 かけるべき最低限の学習コストもかけられないなら諦めて業者に出すことですね。
退会済みユーザー

退会済みユーザー

2021/04/29 10:57

おととい丸一日掛けて作った C# のソースコード見せようか? 結局C#では解決しないことが丸一日掛けて分かったやつ。
退会済みユーザー

退会済みユーザー

2021/04/29 11:07

そもそも今の人間はググって解決するという行為を自分で解決したと勘違いしてるところからして価値観が違うんじゃないですかね? 昔は自分で教科書を見て、自分で考えて、わからなければ先生に聞く人もいれば、とにかく自力で解けるまで考える人もいた。私は奥ゆかしいので後者のタイプ。先生に聞くなどということもなく、問題が解決するまで自分で考えて試行錯誤して解いていた。 その感覚からするとググって見つけた答えを丸々コピーしようが、質問サイトに丸投げして得た答えを丸々コピーしようが、五十歩百歩なんですよ。だから私は質問を丸投げしますし、丸投げの質問にも答える。わかって頂けませんかね? ググって解決する際に参考になる質問にしても丸投げの質問にズバリと正解を回答してあった方がどれだけ役に立つことか、ど素人のバグだらけのコードを長々と掲載した質問に、ここが間違ってますよなんて指摘回答なんか一体何の役に立つと思ってるんでしょうか?
退会済みユーザー

退会済みユーザー

2021/04/29 11:14

自分のバグ入りのソースコードを長々と掲載してどこが間違ってるか教えて下さい的な質問が推奨されてるようだけど、それこそ他人に仕事させてんじゃん。他人のバグだらけのソースコードを解析するなんて仕事だけで十分。ボランティアでやる必要なし。
m.ts10806

2021/04/29 11:49 編集

では、この質問は誰の何の役にも立たないので取り下げといてください。 回答者も調べてすぐわかることを提示してるだけ。自分で調べられるようになったら100倍速いでしょ。こんなの言わなくても誰でもわかる。 >そもそも今の人間はググって解決するという行為を自分で解決したと勘違いしてるところからして価値観が違うんじゃないですかね? 「自分で探そうとした」という点、いきなり丸投げるあなたより100倍マシです。「ほかにも自分と同じような問題に直面した人がいるはずだ」というのが頭にあるから「まず調べよう」となるわけです。 自己評価高すぎでしょあなた。 >おととい丸一日掛けて作った C# のソースコード見せようか? 結局C#では解決しないことが丸一日掛けて分かったやつ。 やりたければどうぞ。 別に止めない。事前調査不十分だっただけでしょ。 元々手に余る仕事だったということで、自力あげましょう。他人に頼ってどうなるものでもない。できないなら業者へ。 あとは・・・矛盾しかないので返信しようと思わない。 問題点は「初心者なりに調べたこと試したことを全くせずに丸投げすること」で、あなたのスタンスがどうとか関係ない。 アドバイスが保証されない無償の質問サイトに投げること自体が元々非効率。
退会済みユーザー

退会済みユーザー

2021/04/29 12:22

>では、この質問は誰の何の役にも立たないので取り下げといてください。 俺レベルの人には非常に有効な質問だよ?
退会済みユーザー

退会済みユーザー

2021/04/29 12:31

>アドバイスが保証されない無償の質問サイトに投げること自体が元々非効率。 何こっそりテラテイルの存在価値を全否定してんだよ。
退会済みユーザー

退会済みユーザー

2021/04/29 12:33

>問題点は「初心者なりに調べたこと試したことを全くせずに丸投げすること」で、あなたのスタンスがどうとか関係ない。 文字列編集のソースコードをだらだらと掲載して欲しいですか?それこそ迷惑千万。
退会済みユーザー

退会済みユーザー

2021/04/29 12:39

>回答者も調べてすぐわかることを提示してるだけ。自分で調べられるようになったら100倍速いでしょ。こんなの言わなくても誰でもわかる。 何度でも言うけど自分で調べるなら文字列編集の方法を調べてます。100倍遅いよ。
退会済みユーザー

退会済みユーザー

2021/04/29 12:42

今日初めてHello World作った超初心者だとお忘れなく。
退会済みユーザー

退会済みユーザー

2021/04/29 12:52

>別に止めない。事前調査不十分だっただけでしょ。 事前調査ではC#で出来る内容がメーカーのホームページに記載されていた。それが機器の不具合だか何だかわからないけど動かなかった。それで別の手段をC#で試したらそれもエラー。githubとか探しまくったけどJavascriptやPHPならサンプルがあるのにC#のサンプルだけはどうしても見つからない。調べて考えてようやくC#では出来ない理由にたどり着いた。そしてPHPのHello Worldに着手という流れ。
guest

回答1

0

ベストアンサー

まず json_decode 関数を使用します。またつまづいたら質問してください。

投稿2021/04/29 07:43

itagagaki

総合スコア8402

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

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

退会済みユーザー

退会済みユーザー

2021/04/29 07:58

追記 デコードしたらこんな感じになりました。 Array ( [devices] => Array ( [0] => Array ( [num] => 1 [serial] => ABCDEFG [model] => ***** [name] => ***** [battery] => 5 [rssi] => [time_diff] => 540 [std_bias] => 0 [dst_bias] => 60 [unixtime] => 1619663634 [channel] => Array ( [0] => Array ( [num] => 1 [name] => Ch.1 [value] => 22.7 [unit] => C ) [1] => Array ( [num] => 2 [name] => Ch.2 [value] => 22.8 [unit] => C ) ) [baseunit] => Array ( [serial] => ABCDEFG [model] => ******* [name] => ******** ) [group] => Array ( [num] => 0 [name] => GROUP1 ) ) ) ) 次はどうすれば良いでしょうか?
退会済みユーザー

退会済みユーザー

2021/04/29 08:29

```PHP print("\n".$response_decode["devices"][0]["serial"]); print("\n".$response_decode["devices"][0]["channel"][0]["name"]); print("\n".$response_decode["devices"][0]["channel"][0]["value"]); print("\n".$response_decode["devices"][0]["channel"][1]["name"]); print("\n".$response_decode["devices"][0]["channel"][1]["value"]); ``` 結果 ABCDEFG Ch.1 22.7 Ch.2 22.8
itagagaki

2021/04/29 08:31

できたんですね :-)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問