下記のような連想配列をつくって、パンくずリストを作成しようかとおもってますが、やりかたがいまいちわかりません。foreachをつかって、こころみているのですが、よろしくお願いいたします。


$data=
array(
1 => array(
'title' => 'top',
'url' => 'http://○○.com/',
'sub' => array(
11 => array(
'title' => '商品TOP',
'url' => '/syohin/syouhin.html',
'sub' => array(
111 => array('title' => '商品詳細',
'url' => '/syohin/syohin_search'),

)
)
)
),
2 => array(
'title' => '会社案内',
'url' => '/company/index.htm'
)
);

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/02/23 19:10:20
  • 終了:2008/03/01 19:15:02

回答(2件)

id:tobeoscontinue No.1

tobeoscontinue回答回数212ベストアンサー獲得回数522008/02/23 20:30:18

ポイント35pt

配列が入れ子状態になっているので再帰にすると簡単だと思います。

function topic_list($data) {
  foreach ($data as $name=>$list) {
    echo '<a href="'.$list['url'].'">'.$list['title'].'</a>';
    if (isset($list['sub'])) {
      echo ' > ';
      topic_list($list['sub']);
    } else echo "<br>\n";
  }
}

topic_list($data);

入れ子状態にするよりは二次元配列のイメージにした方がわかりやすいと思います。

$data= array(
  array(
    array('title' => 'top','url' => 'http://○○.com/'),
    array('title' => '商品TOP','url' => '/syohin/syouhin.html'),
    array('title' => '商品詳細','url' => '/syohin/syohin_search')),
  array(
//  array(),  // tableでの位置合わせ用
    array('title' => '会社案内','url' => '/company/index.htm'))
);

function topic_list($data) {
  foreach ($data as $row) {
    foreach ($row as $id=>$list)
      echo (($id) ? ' > ' : '').
	    '<a href="'.$list['url'].'">'.$list['title'].'</a>';
    echo "<br>\n";
  }
}

また会社案内が先頭から始まるのはおかしいように思いテーブルにしてみました。

会社案内の手前に位置合わせのたるにダミーの配列array()を追加して確認する必要があります。

function topic_list_table($data) {
  echo '<table>';
  foreach ($data as $row) {
    echo '<tr>';
    foreach ($row as $id=>$list)
      echo '<td>'.(($id) ? ' > ' : '').
           '<a href="'.$list['url'].'">'.$list['title'].'</a></td>'."\n";
      echo '</tr>';
  }
  echo '</table>';
}

http://q.hatena.ne.jp

id:zap50326

ありがとうございます。ためしてみたところ表示はうまくできました。一番初めのパターンと2次元配列のパターンではよく使うのはどちらですか?

2008/02/24 16:12:14
id:tobeoscontinue No.2

tobeoscontinue回答回数212ベストアンサー獲得回数522008/02/24 16:46:06

ポイント35pt

>一番初めのパターンと2次元配列のパターンではよく使うのはどちらですか?

すいません。私自身、パンくずリストというものは使っていないので判らないです。


ただ2次元配列のパターンの方が私は理解しやすいです。

http://q.hatena.ne.jp ダミー

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません