为每个数组项添加href

时间:2018-10-16 20:01:37

标签: php arrays

im试图从数组项创建标签,并且数组项的数量始终不同,

$myarray = 'sports,politics,entertainment,celebs';
$siteurl = 'http://example.com/';
$tag = explode(',', $myarray);

这就是我所做的

echo '<p>tag : <a href="'.$siteurl.'?'.$tag[0].'" >'.$tag[0].'</a>, 



<a href="'.$siteurl.'?'.$tag[1].'" >'.$tag[1].'</a>, 
<a href="'.$siteurl.'?'.$tag[2].'" >'.$tag[2].'</a>, 
<a href="'.$siteurl.'?'.$tag[3].'" >'.$tag[3].'</a>,
<a href="'.$siteurl.'?'.$tag[4].'" >'.$tag[4].'</a></p>';

我如何通过一个调用来回显此标签,并且不弄清所有数组项的数量?

编辑:$ vatag的错字

4 个答案:

答案 0 :(得分:5)

您可以使用foreach循环来完成此操作,如下所示:

$myarray = 'sports,politics,entertainment,celebs';
$siteurl = 'http://example.com/';
$tag = explode(',', $myarray);

foreach($tag as &$value) {
    echo '<a href="'.$siteurl.'?'.$value.'" >'.$value.'</a>';
}

结果:

<a href="http://example.com/?sports" >sports</a><a href="http://example.com/?politics" >politics</a><a href="http://example.com/?entertainment" >entertainment</a><a href="http://example.com/?celebs" >celebs</a>

答案 1 :(得分:1)

然后您可以像这样进行操作:

$len = count($tag);
for($i=0;$i<$len;$i++){
   echo '<a href="'.$siteurl.'?'.$tag[$i].'" >'.$tag[$i].'</a>';
}

完整的代码

$myarray = 'sports,politics,entertainment,celebs';
$siteurl = 'http://example.com/';
$tag = explode(',', $myarray);

$len = count($tag);
for($i=0;$i<$len;$i++){
   echo '<a href="'.$siteurl.'?'.$tag[$i].'" >'.$tag[$i].'</a>';
}

另一种更高级的方式是这样的(这是我通常要做的)

$myarray = 'sports,politics,entertainment,celebs';
$siteurl = 'http://example.com/';
$tag = explode(',', $myarray);

$html = array_map(function($item)use($siteurl){
    return '<a href="'.$siteurl.'?'.$item.'" >'.$item.'</a>';
}, $tag);

echo implode("\n",$html);

这样,在页面的源代码中,每个链接都在换行符上,这使得阅读源代码更加容易。您可以使用“”内爆,也不会返回行。

干杯!

答案 2 :(得分:1)

您想要的是一个foreach循环,该循环将遍历数组的事件元素,而不管其长度如何。

// Start with initialising an empty string
$str = '';

// Loop through every element of the $tag array,
//   using $value to hold the value of the current element in the loop
foreach ($tag as $value) {
  // Append the new link to the end of the string
  $str .= '<a href="' . $siteurl . '?' . $value . '" >' . $value . '</a>' . ', ';
}

// Echo the final array, after trimming off any spaces or commas
//   from the end
echo '<p>tag :' . rtrim($str, ', ') . '</p>';

答案 3 :(得分:0)

您没有$vatag数组,是吗?您无法匹配您没有的东西,或者如果您拥有它,向我们展示其内容。

只需使用以下代码:

$siteurl = 'http://example.com/';
$tags = explode(',', 'sports,politics,entertainment,celebs');
echo '<p>Tags: ';
foreach($tags as $tag) {
    echo "<a href=\"{$siteurl}?{$tag}\">{$tag}&nbsp;</a>";
}
echo '</p>';