• 締切済み

前後のデータ

お世話になります。 先日、「外部テキストに保存されているデータを読み込んで、任意のデータで並べ替えたいです。」と言う質問をさせて頂き、結果を得ることが出来たのですが、次のステップで又行き詰まってしまいました。 今度は、前の人と次の人を取得してリンクで繋ぎたいです。 宜しくお願いします。 data.txtには、次の様なデータが格納されてます。 namae<>なまえ<>23<>2008/04/01<> namae<>なまえ<>23<>2008/04/01<> namae<>なまえ<>23<>2008/04/01<> ------------------------------------------------------------------ /* 名前比較用の関数 */ function namecmp($a, $b) {  return strcmp($a[1], $b[1]); } $list = file("data.txt"); foreach ($list as $line) {  // 一度配列に格納  $arr[] = explode("<>", $line); } // ソート usort($arr, "namecmp"); for($i = 0; $i < count($arr); $i++) {  list($data01, $data02, $data03, $data04) = $arr[$i];  print $data02 . ":" . $data04 . "<br>\n";  print "<a href=\"前の人の".$data01.".html\"></a>  print "<a href=\"次の人の".$data01.".html\"></a> } ------------------------------------------------------------------

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

例がわるい 今のままだと同じデータが羅列されているので 前も次もないでしょう。 実際、名前がユニークなのか同じ名前が出現するかによって 前や次をどうするかはダイブ処理がことなるでしょう。 仕様はもっと明確に とりあえず感想としては、配列なのだから、前と次は 今のキーに1引いたり、足したりすればいいだけだと思うけど

noname#227352
質問者

補足

申し訳ありませんでした。 自分自身で考えてみてデータファイルから根本的に手直ししないと無理っぽかったので、手直ししてるところです。 回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 多次元配列のソート?

    お世話になります。 外部テキストに保存されているデータを読み込んで、任意のデータで並べ替えたいです。 data.txtには、次の様なデータが格納されてます。 namae<>なまえ<>23<>2008/04/01<> このデータから、なまえで並べ替えたり、日付で並べ替えたりしたいです。 ------------------------------------------------------------------------------------------------ $list = file("data.txt"); foreach ($list as $line) { //配列を設定 list($data01, $data02, $data03, $data04) = explode("<>", $line); print $data02 . ":" . $data04 . "<br>\n"; } ------------------------------------------------------------------------------------------------ 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 多次元配列のソート2

    お世話になります。 昨日、質問して出来たと思っていたのですが、日付の方で並べ替えることが出来ませんでしたので、再度質問させて頂きます。 外部テキストに保存されているデータを読み込んで、任意のデータで並べ替えたいです。 data.txtには、次の様なデータが格納されてます。 namae<>なまえ<>23<>2008/04/01<> このデータから、日付で並べ替えたいです。 ------------------------------------------------------------------------------------------------ $list = file("data.txt"); foreach ($list as $line) { //配列を設定 list($data01, $data02, $data03, $data04) = explode("<>", $line); print $data02 . ":" . $data04 . "<br>\n"; } ------------------------------------------------------------------------------------------------ 宜しくお願いします。

    • ベストアンサー
    • PHP
  • usortの使い方

    お世話になります。 下記の様なデータが在ります。 ------------------------- | namae | age | hantei | ------------------------- | かんざき | 32 | 1 | ------------------------- | みやざき | 39 | 2 | ------------------------- | あんざき | 26 | 1 | ------------------------- | まえざき | 32 | 1 | ------------------------- | しもざき | 29 | 2 | ------------------------- | あんざき | 26 | 1 | ------------------------- このデータを[namae]で50音順に並び替えることは出来るのですが、[hanntei]でソートさせた後に[namae]でソートしたいです。 上記データが$nameに格納されています。 usortの使い方を教えて下さい。 //優先順位比較 function namecmp($a, $b) { return $a["namae"] > $b["namae"]; } //配列の並べ替え usort($name, "namecmp"); 宜しくお願いします

    • ベストアンサー
    • PHP
  • 掲示板で確認画面からデータを送るには

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 掲示板で確認画面から掲示板へ書込みのデータを送りたいのですが、なかなかうまくいきません。 以下が掲示板のソースと確認画面のソースです。 「掲示板のページ」 <?php if ($_POST["write"] == "書込") { $log = $title . "\t" . $namae . "\t" . $body . "\n"; $fp = fopen("../php/test1.txt","a"); fwrite($fp,$log); fclose($fp); } $data = file("../php/test1.txt"); for($i=sizeof($data)-1;$i>=0;$i--){ list($title, $namae, $body) = explode("\t", $data[$i]); print <<<eof タイトル:{$title}<br><br> 名前:{$namae}<br><br> 記事NO.${i}:{$body}<br> <hr> eof; } ?> 「確認のページ」 <form name="form" action="./form.php" method="POST"> <input type="hidden" VALUE="$title,$namae,$body" > <input name="write" type="submit" value="書込"> </form> おわかりの方いましたらご教授お願いします。

    • 締切済み
    • PHP
  • PHP データの削除と個々の時間を書きだす

    PHPでプログラムを作成したいのですが、ninusyo.phpというphpプログラムからrireki.dataデータファイルを読み込みます。 //問題はここから。 ログインした個々の時間を書きだして、ログアウトボタンを押すとメールアドレスや名前などが消える。というプログラムが出来ません。 ヒントでも構いませんから、教えて頂けると嬉しいです。 以下、ソースです。なお、DBではありません。 <?php //受け渡しデータ //ml:メールアドレスのkey,メールアドレスは半角英数字24桁 //name:名前のkey,名前は半角英数字9桁 //pass(メールアドレスと同じ):パスワードのkey,半角英数字24桁 //mode:書き込みのkey, $modeとして使用。 // パラメータの取得 $ml=trim($_REQUEST['ml']); $name=trim($_REQUEST['name']); $pass=trim($_REQUEST['pass']); $mode=trim($_REQUEST['mode']); // データの入力 print '<form action="ninsyo.php" method="post">'; print ' 名    前 :<input type="text" size="10" name="name" value=" "><br>'; print '  パスワード :<input type="text" size="25" name="pass" value=" "><br>'; print 'メールアドレス:<input type="text" size="25" name="ml" value=" "><br>'; print'         <input type="submit" value="ログイン"><br>'; print'<input type="hidden" name="mode" value="write">'; print'</form>'; //終了 データの入力 //ファイルの追加 if($ml != null){ $fp=fopen("./rireki.data","at"); //$today = date("Y/m/d H:i:s"); fputs($fp,"\n".$ml.",".$name.",".$pass.",".$today); fclose($fp); } //終了 ファイルの追加 } //終了 エラー表示 // 削除データの入力 print '<form action="ninsyo.php" method="post">'; print '          <input type="text" size="10" name="sakujo">'; print '<input type="submit" value="名前deログアウト">'; print '<input type="hidden" name="mode" value="write">'; print '</form>'; // 終了 削除データの入力 // ファイルの読み込み $fp=fopen("./rireki.data","r"); while(!feof($fp)){ $tmp_a[]=mb_ereg_replace("\n","",fgets($fp)); }fclose($fp); $num_data=count($tmp_a); for($i=0;$i<$num_data;$i++){ $mail_a= explode(",", $tmp_a[$i]); for($j=0;$j<4;$j++){ $namae_a[$i][$j]=$mail_a[$j]; } } // 終了 ファイルの読み込み // データのソート select_sort // 削除データの削除 if($sakujo!=null){ for($i=0; $i<$num_data; $i++){ if($namae_a[$i][0]==$sakujo){ $namae_a[$i][0]=$namae_a[$num_data-1][0]; $namae_a[$i][1]=$namae_a[$num_data-1][1]; $namae_a[$i][2]=$namae_a[$num_data-1][2]; $namae_a[$num_data-1][0]=""; $namae_a[$num_data-1][1]=""; $namae_a[$num_data-1][2]=""; break; } } } // 終了 削除データの削除 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 配列n番目のデータの取得をしたい。

    初歩的な質問で恐縮です。 2次元配列形式で作った CSVファイル moromoro.txtがあります。 <?php $CsvData = fopen("./moromoro.txt","r"); $line=fgetcsv($CsvData,50,"\t"); print_r($line); ?> としてブラウザでみると Array ( [0] => abcd,efgh,kimn,qrst,uvwx)  とデータが入ります。ところが、データを取り出すため、 以下の通り4行目を追加しブラウザで見ても白いページだけになります。 01: <?php 02: $CsvData = fopen("./moromoro.txt","r"); 03: $line=fgetcsv($CsvData,50,"\t"); 04: list($aaa,$bbb)=$line; 05: return $aaa; 06: print_r($aaa); 076: ?>  ---------- 4行目以下を次のように変更しても 04: $ccc[]=$line[2]; 05: print_r($ccc); 06: ?> Array ( [0] => )  とだけが出てデータの取得が出来ません。何故でしょうか? どうすれば、配列n番目のデータを取り出すことができるでしょうか?

    • 締切済み
    • PHP
  • 読み込んだデータを配列へ代入する方法

    ---ここから--- 1,2 3,4 ---ここまで--- このようなファイルを読み込んでデータを配列へ格納するには, $pathname="D://data.txt"; open MYFILE, "$pathname"; @list=<MYFILE>; for($i=0;$i<2;$i++){ @dat=split(/,/,$list[$i]); print @dat; } close MYFILE; といったようなforあるいはwhileで1つの配列(上の場合だと@dat)に1行のデータを繰り返し入れていく方法しか思い浮かびません。できれば1行目のデータは@dat1という配列へ,2行目のデータは@dat2という配列へ,といったように行ごとに別々の配列へ代入させたいのですが良い方法はないでしょうか。 もしくは@dat=([1,2],[3,4])のような2次配列の形にでもできれば最高なのですが、、、

    • ベストアンサー
    • Perl
  • データファイルを作成する際に文字化けする

    お世話になります。 PHPで携帯サイト用の登録フォームを作成しています。 下記の様な登録処理をする記述を書きました。 ----------------------------------------- //ユーザーのデータを一行に生成 $line = $_POST["filename"]."<>".$_POST["namae"]."<>".$_POST["age"]."<>\n"; //データファイルに書き込み $fp = fopen("data.txt", "a"); fwrite($fp, $line); fclose($fp); //メッセージを表示 print('<div class="message">' . $_POST["namae"] .'さんを登録しました。' . '</div>' . "\n"); ----------------------------------------- データファイルを開いてみると『十和』という文字が『十\和』と登録されてしまいます。 携帯サイトを作成しているので文字コードは、全てshift-jisで記述しているのですが、文字化け対策の方法が良く判りません。 宜しくお願いします。

    • 締切済み
    • PHP
  • 掲示板の表示について

    掲示板を作っています。 書込みなどの表示がうまくいかず困っています。 試行錯誤していますが、うまくいきません。 下記のように表示したいのですが、 タイトル.ああ               名前.いい 記事NO.うう 下記のように表示されてしまうのです。 タイトル.ああ いい うう 名前.ああ いい うう 記事NO.ああ いい うう 問題のソースは以下の通りです。 <?php $data = file("../php/test1.txt"); list($title, $namae, $body) = explode("\t", $data); for($i=sizeof($data)-1;$i>=0;$i--){ print "タイトル.${data[$i]}<br>\n名前.${data[$i]}<br>\n記事NO.${data[$i]}<br>\n<hr>"; } ?> どなたかおわかりの方いましたらお願い致します。

    • ベストアンサー
    • PHP
  • NEW ARRAY!!

    配列にデータを格納しようとしているのですが、 うまくいきません。アドバイスをお願いいたします。 -------------- <?php <省略> $number = 100; <省略> ?> <script language="javascript"> <!-- Begin arr = new Array(10); for(i=0;i<10;i++){ arr[i] = <?=$number?> - 1; } // End --> --------------------------- 配列arrにデータ('100','99','98', ・・・, '91')と 格納したいのですが、うまくいきません。 宜しくお願いいたします。