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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

965閲覧

同じ配列構造なのに返り値が異なる

Chandler_Bing

総合スコア673

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/02/14 12:28

PHPの配列は同じ構造で作られています。var_dump()すると表示は同じでした。
しかしこれをjQueryのajaxで受け取ると、以下のように$hotelsを受け取っている配列だけ返り値の表示が違います。なぜでしょうか。

[Object, Object, Object] (3) [{hotel_id: "1", country_code: "PHL", pic: "hotel_idが1の画像です"}, {hotel_id: "2", country_code: "PHL", pic: "hotel_idが2の画像です"}, {hotel_id: "3", country_code: "PHL", pic: "hotel_idが3の画像です"}] (3) [{hotel_id: "1", country_code: "PHL", tag: "無料Wi-Fi"}, {hotel_id: "1", country_code: "PHL", tag: "後日支払い可"}, {hotel_id: "1", country_code: "PHL", tag: "宿泊施設へ直接支払い"}, {hotel_id: "2", country_code: "PHL", tag: "キャンセル無料"}, {hotel_id: "2", country_code: "PHL", tag: "無料Wi-Fi"}, {hotel_id: "3", country_code: "PHL", tag: "無料Wi-Fi"}, {hotel_id: "3", country_code: "PHL", tag: "後日支払い可"}, {hotel_id: "3", country_code: "PHL", tag: "宿泊施設へ直接支払い"}, {hotel_id: "3", country_code: "PHL", tag: "朝食付き"}, {hotel_id: "3", country_code: "PHL", tag: "キャンセル無料"}] (10)

PHP

1<?php 2 3$hotels = array( 4 array('hotel_id' => '1', 'country_code'=>'PHL', 'hotel_name'=>'SARROSAホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'30'), 5 array('hotel_id' => '2', 'country_code'=>'PHL', 'hotel_name'=>'SPAホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'40'), 6 array('hotel_id' => '3', 'country_code'=>'PHL', 'hotel_name'=>'MATTHERホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'50') 7); 8 9$pics = array( 10 array('hotel_id' => '1', 'country_code'=>'PHL', 'pic'=>'hotel_idが1の画像です'), 11 array('hotel_id' => '2', 'country_code'=>'PHL', 'pic'=>'hotel_idが2の画像です'), 12 array('hotel_id' => '3', 'country_code'=>'PHL', 'pic'=>'hotel_idが3の画像です') 13); 14 15$tags = array( 16 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 17 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'後日支払い可'), 18 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'宿泊施設へ直接支払い'), 19 array('hotel_id' => '2', 'country_code'=>'PHL', 'tag'=>'キャンセル無料'), 20 array('hotel_id' => '2', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 21 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 22 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'後日支払い可'), 23 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'宿泊施設へ直接支払い'), 24 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'朝食付き'), 25 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'キャンセル無料') 26); 27 28if ($_SERVER['REQUEST_METHOD'] === 'POST') { 29 if (isset($_POST['kind']) && $_POST['kind'] == 'pics') { 30 header('Content-Type: application/json'); 31 echo json_encode($pics); 32 exit; 33 } elseif (isset($_POST['kind']) && $_POST['kind'] == 'tags') { 34 header('Content-Type: application/json'); 35 echo json_encode($tags); 36 exit; 37 } elseif (isset($_POST['kind']) && $_POST['kind'] == 'hotels') { 38 header('Content-Type: application/json'); 39 echo json_encode($hotels); 40 exit; 41 } 42} 43

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

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

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

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

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

cerfweb

2019/02/14 15:20

ご提示いただいたコードだけでは原因がつかめませんので、Ajaxで取得するjsonがどう出力されているのかがわかる部分のコードを追記していただけますか。
m.ts10806

2019/02/14 17:20

オブジェクトと配列の違いを知るところからやり直しては如何
guest

回答1

0

ベストアンサー

返り値の表示が違います。

これがconsole.logによるものだったとしたら、1つ考えられるものとして、表示のタイミング、ということがあります。コンソールを開く前にconsole.logしていたものは、短縮して表示されることも多いです。

投稿2019/02/14 22:33

maisumakun

総合スコア145183

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問