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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

PHP

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

Q&A

解決済

3回答

2425閲覧

PHP:for文のなかで変数と変数を比較させたい

igaiga

総合スコア144

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

PHP

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

0グッド

0クリップ

投稿2016/07/14 09:20

編集2016/07/14 10:31

###前提・実現したいこと
for文のなかで変数と変数を比較させたいのですが、可能でしょうか?
やってみたのですが、Warning: Cannot modify header information - headers already sent by というエラーが出てしまいました。

また代替策などありましたらご教示いただければ幸いです。
よろしくお願いします。

<?php header("Content-Type: text/html; charset=UTF-8"); unlink("list.txt"); require_once( dirname(__FILE__) . '/wp-load.php' ); $xml = simplexml_load_file('http://hoge.jp/city/?key=000&pref_cd=14'); $data = get_object_vars($xml); foreach ($data['city'] as $url) { $results_available = ceil($data2['results_available']/50); for($i = 0; $i < $results_available; $i++){ if($i = 0){ $detail = "http://hoge.jp/room/?key=000&city_cd=" . $url->code; } else { $results_i = ($i*50)+1; $results_count = "&start=" . $results_i . "&count=50"; $detail = "http://hoge.jp/room/?key=000&city_cd=" . $url->code . $results_count; } } $xml2 = simplexml_load_file($detail); $data2 = get_object_vars($xml2); foreach ((array)$data2['room'] as $url2) { $building_cd = $url2->real_building_name;//物件ID //テキストファイルに保存 $fp = fopen('list.txt', 'a'); if ($fp){ if (flock($fp, LOCK_EX)){ if (fwrite($fp, $building_cd."\n") === FALSE){ print('ファイル書き込みに失敗しました<br>'); } flock($fp, LOCK_UN); }else{ print('ファイルロックに失敗しました<br>'); } } } } $flag = fclose($fp); if ($flag){ print('URLリストを「list.txt」に保存しました'); }else{ print('クローズに失敗しました'); } echo "全て取り込み完了しました"; ?>

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

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

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

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

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

guest

回答3

0

ベストアンサー

可能です。

Warning: Cannot modify header information - headers already sent by

session_start() などのHTTPヘッダを扱う関数より前にechoやHTMLの表示があった場合のエラーで、今回のケースと直接関係はありません。

投稿2016/07/14 09:22

tanat

総合スコア18709

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

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

igaiga

2016/07/14 09:31

ありがとうございます。ヘッダって($i = 0; $i < $results_available; $i++){部分のことじゃないんですね。。。
tanat

2016/07/14 09:33

if($i = 0){ は if($i == 0){ でないといけないですね。
tanat

2016/07/14 09:36

> ありがとうございます。ヘッダって($i = 0; $i < $results_available; $i++){部分のことじゃないんですね。。。 違います。 header()やsession_start() setcookie()等のHTTPヘッダを扱う関数がどこかにあって、それより前にechoやHTMLを出力しようとしているはずです。
igaiga

2016/07/14 10:41

ありがとうございます。unlinkで前述のエラーが出ているようです。 for文入れる前は問題なかったんですが、for文の時は使えないんですね。
tanat

2016/07/14 10:54

いや、for文は関係ないです。 現状でfor文を削ったらエラーは解決しますか? 解決しないなら、 保存するときに文字コードをUTF-8(BOM付)で保存してしまったとかも原因としてありえます。
guest

0

意味的にはアレですが、ワーニングが出るようなコードではないような?

それより前の方でなんかやってんじゃないスかねえ。
--- 追加 ---
コードがだいぶ詳細になりましたが、これでも原因は分かんないかなあ。
で、想像になりますが…

PHP

1 2<?php //↑ファイルの1行目が空行

みたいなことになってないスか?

投稿2016/07/14 09:23

編集2016/07/14 10:11
takasima20

総合スコア7458

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

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

igaiga

2016/07/14 09:35

ありがとうございます。 for文消すと動くので前後の文ではないのかなーと思っています。 別のコメントで前後の文書かないとわからないということでしたので質問内容のコードも前後のコードを含めたものに修正しました。
takasima20

2016/07/14 10:13

正直なとこソース全部みないとなんともいえない感じスねえ。
guest

0

エラーの内容と、質問に書いてあるPHPとは全く無関係のものです。前後のコードも書いていただけますか?

ちなみにエラーの内容は一度でもechoやprintで文字を出力したあとにheaderメソッドでHTTPヘッダをいじろうとした時に出る警告です。

###追記
Warningの箇所はまだこのコードでも不明ですが、一箇所問題があります。ifの条件が、「比較」ではなく「代入」になっています。このコードでは$iが何度も0にリセットされるため、無限にループしてしまいます。比較は「==」です。

PHP

1if($i = 0){

投稿2016/07/14 09:23

編集2016/07/14 09:34
masaya_ohashi

総合スコア9206

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

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

igaiga

2016/07/14 09:30

ありがとうございます。無関係なんですね。。。 前後のコードも記載したものに修正しました。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問