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

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

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

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

Q&A

解決済

1回答

1483閲覧

php Undefined variableの原因がわからない

Chandler_Bing

総合スコア673

PHP

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

0グッド

0クリップ

投稿2019/02/13 14:10

以下のようなコードがあり別のPHPファイルで

PHP

1$hotels = ''; 2$pics = ''; 3$tags = ''; 4$getHotelsInfo = new Hotel(); 5list($hotels, $pics, $tags) = $getHotelsInfo->getHotels();

を実行すると、表題のエラーが表示されます。少し前までは問題なく配列の中身を表示できていたので原因が特定できません。
未定義の変数はどこにあるのでしょうか。privateの記述ミスかと思い全て一度publicにしてみましたが同じエラーが表示されます。

PHP

1<?php 2ini_set('display_errors', 1); 3class Hotel 4{ 5 private $hotels = ''; 6 private $pics = ''; 7 private $tags = ''; 8 9 public function __construct() 10 { 11 $this->hotels = array(); 12 $this->pics = array(); 13 $this->tags = array(); 14 $this->getDefalutHotels(false); 15 } 16 17 public function getHotels() 18 { 19 return array($this->hotels, $this->pics, $this->tags); 20 } 21 22 //falseの場合は配列を返さない。 23 private function getDefalutHotels($return = false) 24 { 25 $hotels = array( 26 array('hotel_id' => '1', 'country_code'=>'PHL', 'hotel_name'=>'SARROSAホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'500', 'rate'=>7), 27 array('hotel_id' => '2', 'country_code'=>'PHL', 'hotel_name'=>'SPAホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'100', 'rate'=>8), 28 array('hotel_id' => '3', 'country_code'=>'PHL', 'hotel_name'=>'MATTHERホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'0', 'rate'=>7.5) 29 ); 30 $pics = array( 31 array('hotel_id' => '1', 'country_code'=>'PHL', 'pic'=>'hotel_idが1の画像です'), 32 array('hotel_id' => '2', 'country_code'=>'PHL', 'pic'=>'hotel_idが2の画像です'), 33 array('hotel_id' => '3', 'country_code'=>'PHL', 'pic'=>'hotel_idが3の画像です') 34 ); 35 $tags = array( 36 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 37 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'後日支払い可'), 38 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'宿泊施設へ直接支払い'), 39 array('hotel_id' => '2', 'country_code'=>'PHL', 'tag'=>'キャンセル無料'), 40 array('hotel_id' => '2', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 41 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 42 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'後日支払い可'), 43 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'宿泊施設へ直接支払い'), 44 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'朝食付き'), 45 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'キャンセル無料') 46 ); 47 48 if ($return) { 49 return array($this->hotels, $this->pics, $this->tags); 50 } 51 } 52 53 public function sortByPrice($return = false) 54 { 55 $hotels = array( 56 array('hotel_id' => '3', 'country_code'=>'PHL', 'hotel_name'=>'MATTHERホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'0', 'rate'=>7.5), 57 array('hotel_id' => '2', 'country_code'=>'PHL', 'hotel_name'=>'SPAホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'100', 'rate'=>8), 58 array('hotel_id' => '1', 'country_code'=>'PHL', 'hotel_name'=>'SARROSAホテル', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'500', 'rate'=>7) 59 60 ); 61 $pics = array( 62 array('hotel_id' => '1', 'country_code'=>'PHL', 'pic'=>'hotel_idが1の画像です'), 63 array('hotel_id' => '2', 'country_code'=>'PHL', 'pic'=>'hotel_idが2の画像です'), 64 array('hotel_id' => '3', 'country_code'=>'PHL', 'pic'=>'hotel_idが3の画像です') 65 ); 66 67 $tags = array( 68 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 69 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'後日支払い可'), 70 array('hotel_id' => '1', 'country_code'=>'PHL', 'tag'=>'宿泊施設へ直接支払い'), 71 array('hotel_id' => '2', 'country_code'=>'PHL', 'tag'=>'キャンセル無料'), 72 array('hotel_id' => '2', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 73 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 74 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'後日支払い可'), 75 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'宿泊施設へ直接支払い'), 76 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'朝食付き'), 77 array('hotel_id' => '3', 'country_code'=>'PHL', 'tag'=>'キャンセル無料') 78 ); 79 if ($return) { 80 return array($this->hotels, $this->pics, $this->tags); 81 } 82 } 83 84 public function recommendedHotels($return = false) 85 { 86 $hotels = array( 87 array('hotel_id' => '4', 'country_code'=>'PHL', 'hotel_name'=>'The Philippines hotel', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'0', 'rate'=>8), 88 array('hotel_id' => '5', 'country_code'=>'PHL', 'hotel_name'=>'Coleen Center Hotel', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'100', 'rate'=>8), 89 array('hotel_id' => '6', 'country_code'=>'PHL', 'hotel_name'=>'The very best Hotel', 'hotel_address'=>'セブ シティ, セブ', 'hotel_tel'=>'12345', 'price'=>'500' , 'rate'=>8.5) 90 ); 91 $pics = array( 92 array('hotel_id' => '4', 'country_code'=>'PHL', 'pic'=>'hotel_idが1の画像です'), 93 array('hotel_id' => '5', 'country_code'=>'PHL', 'pic'=>'hotel_idが2の画像です'), 94 array('hotel_id' => '6', 'country_code'=>'PHL', 'pic'=>'hotel_idが3の画像です') 95 ); 96 97 $tags = array( 98 array('hotel_id' => '4', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 99 array('hotel_id' => '4', 'country_code'=>'PHL', 'tag'=>'後日支払い可'), 100 array('hotel_id' => '4', 'country_code'=>'PHL', 'tag'=>'宿泊施設へ直接支払い'), 101 array('hotel_id' => '5', 'country_code'=>'PHL', 'tag'=>'キャンセル無料'), 102 array('hotel_id' => '5', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 103 array('hotel_id' => '6', 'country_code'=>'PHL', 'tag'=>'無料Wi-Fi'), 104 array('hotel_id' => '6', 'country_code'=>'PHL', 'tag'=>'後日支払い可'), 105 array('hotel_id' => '6', 'country_code'=>'PHL', 'tag'=>'宿泊施設へ直接支払い'), 106 array('hotel_id' => '6', 'country_code'=>'PHL', 'tag'=>'朝食付き'), 107 array('hotel_id' => '6', 'country_code'=>'PHL', 'tag'=>'キャンセル無料') 108 ); 109 if ($return) { 110 return array($this->hotels, $this->pics, $this->tags); 111 } 112 } 113} 114

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

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

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

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

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

guest

回答1

0

ベストアンサー

class Hotelの各メソッドで設定している関数$hotels, $pics, $tagsをそれぞれ$this->hotels, $this->pics, $this->tagsとすれば解決するんじゃないでしょうか。

投稿2019/02/13 14:24

cerfweb

総合スコア1899

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

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

Chandler_Bing

2019/02/13 14:38

ありがとうございます。解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問