$cnt = 0;

foreach($sample as $val){
list($id,$date,$comment ,$comment1,$comment2) = split("\t",$val);
$cnt++;
$date = split("/",$date);
if (ereg($date[$cnt0], $val)) {
$sample .=<<<EOM
<tr></td>$id</td><td>$comment</td><td>$comment1</td></tr>

EOM;

}
echo <<<EOM
<table>
$sample
</table>
EOM;

として、配列の中からdate[$cnt]に一致したものをすべて出したいのですが、上記のようにすると、
最初に一致したものしか排出されません。

date[0]と一致するものを探すため$sampleを上から流れて、
一致したところからdate[1]を探すようになってしまってるからだと思うのですが、、、、。
これをdate[0]と一致するものが見つかった場合、
一番上から再びdate[1]を検索するといった感じにしたいのですが、
この場合どうしたらよいのでしょうか。

A 回答 (2件)

最初の、foreachで使用されている配列 $sample の具体的なデータを示して下さい。


2番目と3番目の $sample (変数) は、$sample[n] の記述ミスですか?
タブ区切りで配列 $sample に格納されている $date の部分は、2009/05/12 のような感じですか?
だとすると、$cnt が / 区切りで取り出した $date の要素数より多くなると、変なことになるような気がします。
あと、閉じ括弧が1つ足りないような。

想像するに、

$sample[0] = 'id1 2009/05/12 こめんと コメント1 米ン戸2';
$sample[1] = 'id99 2009/05/12 こめんと コメント1 米ン戸2';
$sample[2] = 'id77 2009/05/11 こめんと コメント1 米ン戸2';
~ 省略 (3-67) ~
$sample[68] = 'id14 2009/05/09 こめんと コメント1 米ン戸2';
$sample[69] = 'id6 2009/05/03 こめんと コメント1 米ン戸2';

のような感じでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございました^^
ちょっと記述ミスがありました。。

お礼日時:2009/05/17 18:13

$cnt0に何も設定していないのが原因では?

この回答への補足

すみません、質問の記述ミスです^^;
$date[$cnt]で実際は記述しています。

補足日時:2009/05/12 13:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報