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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

Q&A

解決済

1回答

1488閲覧

[PHP] foreach内の処理を関数化したら動かなくなった

spellbound

総合スコア190

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

0グッド

0クリップ

投稿2017/06/20 01:37

編集2017/06/20 01:47

わからないこと

  • PHPの処理を関数化したら元々の処理が動かなくなった。
  • そもそも関数化できていないのかも知れないです。

関数化したコード

php

1 function getData($id) { 2 $apiUrl = "https://example.com"; 3 $context = stream_context_create( 4 array( 5 'http' => array( 6 'ignore_errors' => true 7 ) 8 ) 9 ); 10 $response = file_get_contents($apiUrl . $id, false, $context); 11 $json = json_decode($response); 12 $name = $json->Name; 13 $prefName = $json->PrefName; 14 $areaName = $json->AreaName; 15 $latitude = $json->Latitude; 16 $longitude = $json->Longitude; 17}

foreach文

php

1foreach ($ids as $id) { 2 $testId = $id->meta_value; 3 getData($testId); 4 // 以下省略 5}

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/06/20 02:12

動かなくなった、とは、なにかphp由来のエラーメッセージが表示されるのか、それとも。
spellbound

2017/06/20 02:14

関数に返り値がない状態となっていました。また、関数を呼び出しているのにも関わらず、繰り返し文内で変数を定義していなかったのでデータがからの状態でした。ありがとうございます。
guest

回答1

0

ベストアンサー

名前が違いますよ

定義名:getData()
呼び出し側(foreach内):getAcmData()

関数の未定義エラー出てません?

追記:
ただ関数化したもののデータ取得するだけで何も返却してないようですが、サンプルコードだからですか?

投稿2017/06/20 01:39

編集2017/06/20 01:40
m.ts10806

総合スコア80850

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

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

spellbound

2017/06/20 01:48

ご指摘ありがとうございます。 テストコードで消し忘れていました。
spellbound

2017/06/20 01:48

なお、エラー文は出ておらず、Foreach内でINSERT INTOしていますが、関数化したところだけ保存されなくなりました。
m.ts10806

2017/06/20 01:53

getData関数で何も返却していないからです。 関数内で定義した変数のスコープは当該関数内のみです。 return json_decode($response);  として呼び出した側で受け取ると良いでしょう。 つまり、 $name = $json->Name;から下は関数化しなくていいってことですね。
m.ts10806

2017/06/20 01:56

呼び出し側は、 $json = getData($testId); として $name = $json->Name; と続ける感じです。
spellbound

2017/06/20 02:12

ありがとうございました!!!!!!????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問