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

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

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

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

Q&A

解決済

2回答

495閲覧

for文の中のFunctionで引数$iを使うには

supermaruetsu

総合スコア148

PHP

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

0グッド

0クリップ

投稿2017/10/26 01:37

表題のようにfor文の中に関数があり、その中で$iを使いたいです。
やりたいことは、結果を順に配列にセットするというもので、求めるreturnも合わせて記載しております。
よろしくお願い致します。

php

1class TestController extends Controller 2{ 3 } 4 public function index() 5 { 6 $client = new Client(); 7 $guzzleClient = new GuzzleClient(array( 8 'timeout' => 120, 9 )); 10 $client->setClient($guzzleClient); 11 12 $baseUrl = "https://hoge.com/fuga.php?id="; 13 $params = $this->queryParams->data(); 14 15 for ($i=0; $i < 10; $i++) { 16 $formattedUrl[$i] = $baseUrl.$params[$i]; 17 $crawler[$i] = $client->request('GET', $formattedUrl[$i]); 18 19 // Get Data Source 20 $crawler[$i]->filter("#tile ul li")->each(function ($node) { 21 $characterArray[$i] = $node->text() . "<br>"; // ←ここの「$i」 22 sleep(5); 23 }); 24 } 25 }

php

1//return 2 3[ 4 0 => hoge huga, 5 1 => hoga huge faga, 6 2 => ... 7 . 8 . 9 9 => ... 10] 11

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

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

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

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

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

guest

回答2

0

ベストアンサー

クロージャの外部から変数を内部に持ち込む場合、useを使ってください。

php

1$crawler[$i]->filter("#tile ul li")->each(function ($node) use ($i) {

なお、use ($i)のようにすると値はコピーされます。内部から変更したい場合は、use (&$i)のように参照で渡してください。

投稿2017/10/26 01:42

maisumakun

総合スコア145184

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

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

supermaruetsu

2017/10/27 02:54

コピーされるという本質をご回答頂き、非常に助かりました!有難うございます。
guest

0

PHP

1 // Get Data Source 2 $crawler[$i]->filter("#tile ul li")->each(function ($node) { 3 $characterArray[$i] = $node->text() . "<br>"; // ←ここの「$i」 4 sleep(5); 5 });

ここで無名関数を宣言していますね?
公式サイトでは無名関数を宣言する時、親のスコープから変数を持ってくる書き方が存在します。

無名関数 - PHPマニュアル

PHP

// $message を引き継ぎます
$example = function () use ($message) {
var_dump($message);
};
$example();

後は消化試合だと思うので割愛。

投稿2017/10/26 01:44

miyabi-sun

総合スコア21158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問