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

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

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

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

Q&A

解決済

1回答

1846閲覧

なぜjson_decodeで真偽値が返ってくる?

navca

総合スコア44

PHP

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

0グッド

0クリップ

投稿2016/12/09 16:01

プログラミング初心者です。WEB APIをやってみようと思い、flickrのサンプルコードを
https://syncer.jp/flickr-api-matome
↑のサイトから丸々コピーして出力したのですが、エラーが出たのでそれをしばらく調べています。

foreach( $obj->photo as $photo )

エラーはHTMLの処理が終わったすぐ後の↑の$objがオブジェクトじゃないという趣旨とphotoというプロパティはないという趣旨の二つが出ています。

$objの代入箇所を見ると

// JSONをオブジェクト型に変換する $obj = json_decode( $json) ;

とあり、なるほどjso_decodeというメソッドでjsonをオブジェクト型にできるんだなと思いましたが、オブジェクトじゃないというエラーが出るので

echo gettype($obj);

として調べてみると、「boolean」と返ってきました。

外部ファイルを読み込んでるわけでもないので、文字コードの関係でjson_decodeが機能しないという話も関係あるのかわかりません。

戻り値があるので余計なことかもしれませんがjsonオブジェクトは古いphpのバージョンだと使えないということだったので、xammpのバージョン情報を確認したところ問題なしでした。

なぜ真偽値が帰ってきてしまうのか不思議です。jso_decodeを調べて見ても問題があるようには思えませんでした。

アドバイス頂ければ幸いですm(__)m

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

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

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

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

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

guest

回答1

0

ベストアンサー

json_decodefalse を返すのは渡された値が文字列の false と等しい場合のみです。デコードに失敗した場合は null を返します。つまり $json"false" が入っていることが原因です。

続いて文字列の false が入った原因ですが、上に書かれている API の呼び出しが false を返しています。
phpFlickr のソースを読むとこれは何かが失敗した場合に false を返すことがわかります。
https://github.com/dan-coulter/phpflickr/blob/bc4f2092b15d347e3d40c19fe0dbff8759fc8e51/phpFlickr.php#L1110

lang

1// 検索を実行し、取得したデータを[$result]に代入する 2$result = $flickr->photos_search( $option ) ;

失敗した理由を調べてみましょう。
$app_key$app_secret には適切な値を設定しましたか?

phpFlickr オブジェクトにエラーの原因が格納されているかもしれません。その場合は次のコードで表示できます。

lang

1var_dump($flickr->getErrorCode(), $flickr->getErrorMsg());

投稿2016/12/09 16:26

chitoku

総合スコア1610

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

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

navca

2016/12/10 00:19

回答いただきありがとうございますm(__)m 問題のあぶりだし方が大変参考になりました。 教えていただいたコードを入力してみたところ戻り値は「bool(false) bool(false)」でした。 $app_key と $app_secretの部分も間違いなくkeyはkeyの場所にsecretはsecretの場所にコピペして入れました。入念に一文字づつ確認しましたが、抜けもありませんでした。 ほかにおかしいところは見当がつかないのですが、一点だけ自分で操作をしたところがあります。xamppを使っているのですが、htdocsフォルダにphpflickrフォルダをそのまま置くと読み込まないので、phpflickr.phpファイルだけを取り出してhtdocsにおいてます。 お手数ですが、何かヒントがありましたら回答よろしくお願いしますm(__)m
chitoku

2016/12/13 16:22

$flickr->parsed_response には何が入っていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問