我认为我很好地接受了这个,但我只是坚持这一点。我想使用数组和foreach循环显示此菜单:
<a href="/design/payments"><img src="/img/page-icons/credit-card21.png" />Payments</a>
<a target="_blank" href="/cloud"><img src="/img/page-icons/upload123.png" />Cloud</a>
<a target="_blank" href="/portal"><img src="/img/page-icons/earth208.png" />Portal</a>
为此,我需要在PHP中将其转换为这一行:
echo '<a href="' . $link . '" target="' . $target . '"><img src="/img/page-icons/' . $image . '" />' . $title . '</a>';
要在循环中填写,我们需要创建这样的东西......这就是我被困住的地方:
foreach( $stamp as $link => $target ){
echo '<a href="/' . $link . '" target="' . $target . '">';
foreach( $stamp[] as $title => $image ){
echo '<img src="/img/page-icons/' . $image . '" />' . $title;
}
echo '</a>';
}
我真的不知道如何解决上述问题,今天只是搞乱了一段时间。我也不想总是在每个链接上显示target="' . $target . '"
。
数组可能是二维数组?这样的事情:
$stamp = array(
'link' => array('title' => 'image'),
'link' => array('title' => 'image'),
'link' => array('title' => 'image')
);
编辑:
对于'目标'是什么有一些混淆,我想将数组中的4个值回显到链接中,目标是其中一个值。我不知道如何在数组中使用它,所以我把它留了出来。
答案 0 :(得分:2)
当你这样做时:
foreach( $stamp as $link => $target )
$link
变量包含字符串“ link ”,$target
变量是一个数组,例如['title' => 'image']
。
你应该做的是拥有这样的数组:
// Init links
$links = array();
// Add links
$links[] = array(
'title' => 'My Title',
'href' => 'http://www.google.com',
'target' => '_blank',
'image' => 'image.png',
);
foreach ($links as $link)
{
echo '<a href="'.$link['href'].'" target="'.$link['target'].'">';
echo '<img src="/img/page-icons/' . $link['image'] . '" />';
echo $link['title'];
echo '</a>';
}
这是一种更灵活的方法,允许您将来向结构添加其他数据项。如果您有不同的数据源(如数据库),则可以在循环中轻松生成$links
数组。
修改强>
要回答您的进一步问题,您可以在链接构建前添加一组理智的默认值,如下所示:
foreach ($links as $link)
{
// Use the ternary operator to specify a default if empty
$href = empty($link['href']) ? '#' : $link['href'];
$target = empty($link['target']) ? '_self' : $link['target'];
$image = empty($link['image']) ? 'no-icon.png' : $link['image'];
$title = empty($link['title']) ? 'Untitled' : $link['title'];
// Write link
echo "<a href='$href' target='$target'>";
echo "<img src='/img/page-icons/$image' />";
echo $title;
echo "</a>";
}
答案 1 :(得分:0)
您可以将数组设置为:
$stamp = array(
'0' => array('title'=>$title 'image'=>$image,'link'=>$link,'target'=>$target),
'1' => array('title'=>$title, 'image'=>$image,'link'=>$link,,'target'=>$target),
'2' => array('title'=>$title 'image'=>$image,'link'=>$link,'target'=>$target)
);
在foreach中你可以写
$i=0;
foreach( $stamp as $st=> $target ){
echo '<a href="/' . $st['link'] . '" target="' . $st['target'] . '">';
echo '<img src="/img/page-icons/' . $st['image'] . '" />' . $st['title'];
echo '</a>';
}