我有两个数量相同的数组。一个存储一个类来表示社交媒体,另一个存储与该类配对的URL。它们看起来像这样:
$array1 = ([0]=>twitter,[1]=>facebook,[2]=>linkedin);
$array2 = ([0]=>http://www.twitter.com/username123,[1]=>http://www.facebook.com/user-name123,[2]=>http://www.linkedin.com/stuff/username123);
我想同时遍历数组,在各自的位置打印数据以创建社交媒体链接。我目前有这个:
foreach ($array1 as $k1=>$class){
foreach ($array2 as $k2=>$URL){
echo '<li><a href="'.$URL.'" class="'.$class.'">Visit Site</a></li>';
}
}
这会重复每个项目两次,我认为这是由于嵌套的foreach。
如果我将echo语句移到嵌套函数之外,它会打印我想要的所有类,但只会从该数组中获取最后一个URL。
如何为每个配对打印单个列表项链接组合?我见过array_unique来删除重复项,但我是一个严肃的PHP n00b。
谢谢。
答案 0 :(得分:2)
可能会有所帮助:
$rgLinks = array_combine($array1, $array2);
foreach($rgLinks as $sClass=>$sHref)
{
echo('<li><a href="'.$sHref.'" class="'.$sClass.'">Visit Site</a></li>');
}
答案 1 :(得分:1)
IMO,尤金有最好的答案。我只想提一下如果$ array1和$ array2有不同数量的项目。
foreach ($array1 as $k1=>$class){
if (isset($array2[$k1])) {
echo '<li><a href="'.$array2[$k1].'" class="'.$class.'">Visit Site</a></li>';
}
}
答案 2 :(得分:0)
您可以使用for
循环,只要它们具有相同的count
$length = count($array1);
for($i=0; $i<$length; $i++)
{
echo '<li><a href="'.$array2[$i].'" class="'.$array2[$i].'">Visit Site</a></li>';
}
答案 3 :(得分:0)
你做错了。没有必要使用2个数组。尝试像
这样的东西$array = array(
'twitter' => 'http://www.twitter.com/username123',
'facebook' => 'http://www.facebook.com/user-name123',
'linkedin' => 'http://www.linkedin.com/stuff/username123'
);
foreach ($array as $url=>$class){
echo '<li><a href="'.$url.'" class="'.$class.'">Visit Site</a></li>';
}
或按照上一个答案的建议使用array_combine
。