プロが教える店舗&オフィスのセキュリティ対策術

素朴な質問をさせてください。
変数"$test"があります。これをあるwebページにて$type条件で指定した要素が存在する数だけ回して表示しています。
<html>
<body>
<?
$testlist = gettestList($type);
foreach ($testlist as $test) {
?>

<?= hs($test["URL"]) ?>

<?
}
?>
<body>
<html>
このとき、foreach文中の($test["URL"])の値が
前のループの時と同じ値の場合は<?= hs($test["URL"]) ?>では何も表示させないようにしたい(その要素の値はなしにしたい)のです。
たとえば$testの$type条件で指定された要素の値(表示されるべき"URL"値)は下記があるとします。
http://oshiete1.goo.ne.jp/
http://oshiete1.goo.ne.jp/
http://hogehoge.com/
http://gehogeho.com/
このときのbody内の表示は
http://oshiete1.goo.ne.jp/
http://hogehoge.com/
http://gehogeho.com/
と表示されるようにしたいのです。

どうかご教授の程、よろしくお願いいたします。

A 回答 (2件)

> <?= hs($test["URL"]) ?>



これが何を意図しているのかと、gettestList関数の仕様とが不明であるため、
的外れな回答であるかもしれませんが、例えばこんな風にしてみてはいかがでしょうか。


<html>
<head></head>
<body>
<?php
// gettestList関数で取得したつもり
$testlist = array('http://oshiete1.goo.ne.jp/',
'http://oshiete1.goo.ne.jp/',
'http://hogehoge.com/',
'http://gehogeho.com/'
);
$prev = '';
foreach ($testlist as $test) {
  if ($test != $prev) {
    print "<a href=\"$test\">$test</a><br />";
  }
  $prev = $test;
}
?>
</body>
</html>

(注)インデントのため、全角空白を使っています。
    • good
    • 0
この回答へのお礼

無事解決いたしました。
貴重な参考意見感謝いたします。
ホントにどうもありがとうございました。

お礼日時:2007/03/25 22:05

こういう方法はいかがでしょうか。



ループの中で配列変数(ここでは$found)の連想配列のキーとして$test["URL"]を使用し、配列にダミー値をセットします。
連想配列に指定したキーがあるかどうかを array_key_exists() で調べ、ない場合に「はじめて出てきた」と判断して hs($test["URL"])を出力し、$test["URL"]をキーとしてセットします。

<html>
<body>
<?
$testlist = gettestList($type);
unset($found);
$found[0]=1; //$foundを配列変数と定義するためのダミー行

foreach ($testlist as $test) {
?>

<?
if (!array_key_exists($test["URL"],$found)) {
print hs($test["URL"]);
$found[$test["URL"]] = 1;
}
?>

<?
}
?>
<body>
<html>

この回答への補足

非常にスマートな方法をありがとうございます。
この方法の場合、同じ値がをもつ要素が複数あるとき
最初に同じ値を持つ要素のみ、表示しないでくれますが、
次からまた複数表示されてしまいます。
例>​
http://oshiete1.goo.ne.jp/
http://oshiete1.goo.ne.jp/
http://hogehoge.com/
http://gehogeho.com/
http://gehogeho.com/

表示される内容
http://oshiete1.goo.ne.jp/
http://hogehoge.com/
http://gehogeho.com/
http://gehogeho.com/

有効な方法をご教授いただいたにもかかわらず、
度々恐れ入りますが、
複数の値を持つ要素が複数あっても重複表示を防ぐ方法ありますでしょうか?

補足日時:2007/03/25 19:31
    • good
    • 0
この回答へのお礼

無事解決いたしました。
貴重な参考意見感謝いたします。
ホントにどうもありがとうございました。

お礼日時:2007/03/25 22:05

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