samplefile.txtの行番号とfile関数で取得した配列の行番号がずれる - PHPプロ!Q&A掲示板

621

  • 0P

samplefile.txtの行番号とfile関数で取得した配列の行番号がずれる

質問日時 / 2007年8月27日 16:09    回答数 / 8件

Questioner:  minato  このエントリーをはてなブックマークに追加 

キーワード / 配列    行番号   

 申し訳御座いません。minatoと申します。当方全くの初心者でして、未熟ながらも
phpの独学を続けております。
 この度はどうしても解決できないことが御座いまして、皆様の御指導を賜りたく思い、
こういった形で問い合わせをさせて頂いた次第であります。
 「saity先生のphp基礎講座」の第14回のschedule_list.phpであります。更新する為に、
配列のキーである$lineaを利用するわけですが、これは0から始まるものであり、一方の
samplefile.txtの中身は1から始まるものです。従いまして、編集するをクリックしても、
指定されたスケジュールは見つかりません、という文言が出力されてしまいます。
 何卒御知恵を拝借出来ませんでしょうか。


ツリー一覧

┗A01signalfile() を使って読み込んだデータは 0 から始まる配列
 ┗A01-1minato 御返信、有難う御座います。くだらない質問をして申
  ┗A01-1-1shimix>terapadで開いているのですが、1から始まっているの
   ┣A01-1-1-1minato御回答有難う御座います。申し訳ないです。 さっそく
   ┣A01-1-1-2minato 申し訳御座いません。やはりどうしても行番号が取得
   ┃┗A01-1-1-2-1taktoこんにちは。 記事をほぼ丸写しされたとしても実際の
   ┃ ┗A01-1-1-2-1-1minato有難う御座います。全く仰るとおりで御座います。 タ
   ┗A01-1-1-3minato 大変御迷惑をお掛けいたしました。ただいま解決致し

回答一覧

並び替え:

A01 参考になった
answerersignal [8月27日 22:07]

file() を使って読み込んだデータは 0 から始まる配列ではないですか?

この意見に回答する

ツリーへ TOPへ

A01-1
replyerminato [8月28日 08:55]

 御返信、有難う御座います。くだらない質問をして申し訳御座いません。
 はい、確かにfile()を使って読み込んだデータは0から始まる配列となるのですが、
肝心のsamplefile.txtの方が、terapadで開いているのですが、1から始まっている
のです。ワードパッドでも同じであります。配列のキーに1を足してみようかと考えて
いるのですが、こちらもうまくいきません。
 申し訳ありません。$lineaではなく、$lineoでした。

この意見に回答する

ツリーへ TOPへ

A01-1-1 参考になった
replyershimix [8月28日 14:11]

>terapadで開いているのですが、1から始まっているのです。

それは“terapadが(表示上)付加している行番号”では?便宜上表示されているだけで意味はありません>行番号。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyerminato [8月28日 14:22]

御回答有難う御座います。申し訳ないです。
さっそくもう一度試してみることに致します。
進展がありましたら、御報告させて頂きたいと存じます。

この意見に回答する

ツリーへ TOPへ

A01-1-1-2
replyerminato [8月29日 13:00]

 申し訳御座いません。やはりどうしても行番号が取得出来ません。
  とにかく、行番号をschedule_edit.phpに渡せばいい、
 と第十四回にありますが、file()の配列は0から始まるのに対し、エディタは1から始まりますので、
ずれてしまうのです。
 schedule_edit.php?lineo=0、となり、指定されたスケジュールは見つかりません、が表示されてしまうのです。
 まことに恐縮ですが、何卒もう一度御助言を賜れませんでしょうか。

この意見に回答する

ツリーへ TOPへ

A01-1-1-2-1 満足
replyertakto [8月29日 16:23]

こんにちは。
記事をほぼ丸写しされたとしても実際のコードを掲示しないと堂々巡りになってしまうと思います。

> schedule_edit.php?lineo=0、となり、
挙動としては正しいです。行番号の0番というのは1行目に相当します。

配列がゼロから始まるのではなく、コンピュータにおける数字の数え方はゼロから始まると
考えた方がよいでしょう。テキストエディタなどはそれを人間が見やすいように+1して表示
しているに過ぎません。

で、ここまで書いて該当記事を確認したのですが問題の箇所ってここですよね。
http://www.phppro.jp/school/phpschool/vol14/1

  1. foreach ($schedule_list as $lineno => $line) {
  2.     list($schedule_date, $title, $body) = explode("|", $line);
  3.     print("日付:$schedule_date タイトル:$title 内容:$body");
  4.     print("<a href=\"schedule_edit.php?lineno=$lineno\">
  5.           編集する</a>");
  6.     print("<br>");
  7. }

もしかして"lineno"と"lineo"のタイプミスとかないでしょうか?
以降のコードで$_GET["lineno"]していたら当然ないといわれると思いますが。
とにもかくにもコード自体を確認しなければわからないので該当箇所を転記なされることを
お勧めいたします。

この意見に回答する

ツリーへ TOPへ

A01-1-1-2-1-1
replyerminato [8月29日 16:28]

有難う御座います。全く仰るとおりで御座います。
タイプミスでありました。申し訳御座いません。

この意見に回答する

ツリーへ TOPへ

A01-1-1-3
replyerminato [8月29日 16:25]

 大変御迷惑をお掛けいたしました。ただいま解決致しました。
やはり仰るとおり、terapadに便宜上表示されている番号に過ぎませんでした。
単に、lineoの部分を異なる名称にしてしまっていただけでした。
本当に恥ずかしいミスで、申し訳ない限りです。
御助言を頂きまして、まことに有難う御座いました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
動的なURLを静的に見せる方法
 このエントリーをはてなブックマークに追加 
A
普通に考えて、mod_rewrite でしょうね。 http://www.nishishi.com/blog/2006/01/mod_rewrite_url.html...

>>続きを読む

GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)