指定位置から指定数を繰り返し処理する方法を教えてください。 - PHPプロ!Q&A掲示板

4850

  • 0P

指定位置から指定数を繰り返し処理する方法を教えてください。

質問日時 / 2017年7月20日 01:40    回答数 / 6件

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

キーワード / 指定位置    指定数    繰り返し   

恐れ入ります。掲題の件について、教えてください。

12個の箱があり、
N番目の箱から指定した数を順番に入れていく処理がしたいです。

具体的には、3番目の箱から5個を入れたいです。1~2番目、8~12番は空箱です。

この場合のプログラムはどのような記述になりますでしょうか?

ご教授のほど、よろしくお願い申し上げます。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimix>12個の箱があり phpソースで「12個の箱」をどのよ
 ┗A01-1yamaguchi_eiご回答ありがとうございます。 12個の箱はHTMLのTABL
  ┗A01-1-1shimixtd要素が「箱」というわけでもないですよね?提示され
   ┗A01-1-1-1yamaguchi_eiいろいろと言葉足らずでご面倒をお掛けしており申し訳
    ┗A01-1-1-1-1shimixうーん・・。こんな感じですかね >>CODE <?php /
     ┗A01-1-1-1-1-1yamaguchi_eiご回答ありがとうございます。 参考にいたします。

回答一覧

並び替え:

A01
answerershimix [7月20日 05:44] (最終編集:7月20日 06:59)

>12個の箱があり

phpソースで「12個の箱」をどのように表現しているのでしょうか?その「箱」の性質がわからないとどう表現すべきかが決まりません。単にひとつの数値を保持するだけでよければ配列でいいんでしょうけど・・・

配列ならfor構文で書けるとは思いますが、あまりにも基礎の基礎なので「何がわからないのか」がわからないです。

この意見に回答する

ツリーへ TOPへ

A01-1
replyeryamaguchi_ei [7月20日 09:28]

ご回答ありがとうございます。
12個の箱はHTMLのTABLEタグになります。
開始点と終了点を指定して、その間のセルに文字列を出力したいです。
この場合のコードを教えていただけると助かります。

  1. <table>
  2. <tr>
  3. <td>1</td>
  4. <td>-</td>
  5. <td>2</td>
  6. </tr>
  7. <tr>
  8. <td>3</td>
  9. <td>-</td>
  10. <td>4</td>
  11. </tr>
  12. <tr>
  13. <td>5</td>
  14. <td>-</td>
  15. <td>6</td>
  16. </tr>
  17. <tr>
  18. <td>7</td>
  19. <td>-</td>
  20. <td>8</td>
  21. </tr>
  22. <tr>
  23. <td>9</td>
  24. <td>-</td>
  25. <td>10</td>
  26. </tr>
  27. <tr>
  28. <td>11</td>
  29. <td>-</td>
  30. <td>12</td>
  31. </tr>
  32. </table>

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyershimix [7月20日 19:29]

td要素が「箱」というわけでもないですよね?提示されたhtmlソースでは左右の「箱」の間にもtd要素が入っています。「箱」はどういう条件で設定されるんでしょうか?

tr要素の内側が、必ず「箱」「箱じゃないtd要素」「箱」の並びになっているという前提でいいんでしょうか?

そういう条件を仕様として提示してください(ソースを例示されても困ります)。「箱」に収める文字列は全部同じ文字列でいいのかとか・・


#正直、仕様の聞き取りから始めるとは思わなかった(汗


また(根本的なことですが)既存のhtmlソースを改竄するのですか?それとも最初から(「箱」じゃないtd要素も含めて)phpから出力していいのですかね?

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyeryamaguchi_ei [7月20日 23:53]

いろいろと言葉足らずでご面倒をお掛けしており申し訳ございません。

TR, 入れるTD, 空のTD, 入れるTD, TR

上記の組み合わせを6回繰り返したいと思っています。
入れるTDの中身はすべて同じ文字列になります。
TABLEからphp出力になります。

度々すいません。よろしくお願いします。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1
replyershimix [7月21日 11:09]

うーん・・。こんな感じですかね

  1. <?php
  2. // 添え字の開始がどうなっていてもキチンと処理する
  3. $data = array_fill(612'');
  4. $start = 3// 置換開始
  5. $change = 5// 置換数
  6.  
  7. // 置換処理
  8. $pos = 0// 何番目の項目か
  9. $replace = 0// 置換済み数
  10. foreach ($data as $key=>$val) {
  11.   $pos++;
  12.   if ($pos < $start) { continue}
  13.   $data[$key] = '';
  14.   $replace++;
  15.   if ($replace < $change) { continue}
  16.   break;
  17. }
  18.  
  19. // 表示開始
  20. print '<table>' . PHP_EOL;
  21. // 0からの添え字に置き換える
  22. $arr = array_values($data);
  23. for ($i = 0$i < count($arr)$i += 2) {
  24.   printf('<tr><td>%s</td><td>-</td><td>%s</td></tr>' . PHP_EOL$arr[$i]$arr[$i+1]);
  25. }
  26. print '</table>' . PHP_EOL;

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1
replyeryamaguchi_ei [7月24日 01:46]

ご回答ありがとうございます。
参考にいたします。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

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

Q&A掲示板 新着情報