0

ナビゲーション リンクを自動化しようとしています。自動的にエコーアウトするにはどうすればよいですかforeach。現在、未定義のオフセットが発生しています...配列の最初の項目 (つまり、タイトル) を無視できますか?

'control' => array( 0=>'Controls',
                    1=> array('Add school','add.school.php'),
                    2=> array('Add doctor','add.doctor.php'),
                    3=> array('Add playgroup','add.play.php'),
                    4=> array('Suggestions','suggestion.php'),
                    5=> array('List tutor service','list.tutor.php'),
                    6=> array('Create playgroup','create.play.php'),
                        7=> array('Dashboard', 'dashboard.php')
                        ),



 <?php  

    foreach ($nav['control'] as $value=>$key){
                echo'<a href="'.$key[2].'">'.$key[1].'</a>';
                }
   ?>
4

4 に答える 4

4

数値配列は、1 ではなく 0 からインデックス付けされ[1]ます[0]

于 2012-07-17T03:37:22.333 に答える
2
// for key => value is more nature.
foreach ($nav['control'] as $key => $value){
   // should skip the first.
   if ($key === 0) {
     continue;
   }
   // array is 0 base indexed.
   echo'<a href="'.$value[1].'">'.$value[0].'</a>';
}
于 2012-07-17T03:39:29.743 に答える
0

ネストされた配列には、ネストされたループが必要です。

foreach($array as $key => $value){
  if($key != 0){
  foreach($value as $k => $v){
    if($k == 0){ $title = $v;}
    if($k == 1){ $link = $v;}
  }
//put code to run for each entry here (i.e. <div> tags, echo $title and $link)
}

2 つのフィールドのみを使用するときの私の個人的な慣習は、最初のフィールドを配列 ['id'] にプッシュし、2 番目のフィールドを値としてプッシュすることです。

while($row_links = sth->fetch (PDO::FETCH_ASSOC)){
  $array[$row_links['title']] = $row_links['link'];
}

その後、使用できます

<?php foreach($array as $key => $value){ ?>
  <a href="<?php echo $value; ?>"><?php echo $key; ?></a>
<?php } ?>
于 2012-07-17T03:50:26.707 に答える
0
foreach ($nav['control'] as $value=>$key) {
                echo'<a href="'.$key[1].'">'.$key[0].'</a>';
}
于 2012-07-17T03:38:31.257 に答える