(初学者';的问题)在PHP中通过数组进行回音,仅根据特定条件添加逗号
我知道,这是非常基本的!对不起,只是其中的一天 我从数据库中收集了一组标签。此数组中可能有任意数量的标记。但是,我只想输出4 所以我现在有这个代码:(初学者';的问题)在PHP中通过数组进行回音,仅根据特定条件添加逗号,php,arrays,iterator,Php,Arrays,Iterator,我知道,这是非常基本的!对不起,只是其中的一天 我从数据库中收集了一组标签。此数组中可能有任意数量的标记。但是,我只想输出4 所以我现在有这个代码: $iteration = 0; foreach ($tagarray as $tag) { ?> <div class="tagbutton listv"> <span><?php echo $tag; ?></span>, </div> <?php $iteration
$iteration = 0;
foreach ($tagarray as $tag) { ?>
<div class="tagbutton listv">
<span><?php echo $tag; ?></span>,
</div>
<?php
$iteration++;
if ($iteration == 4) {
break;
}
} ?>
$iteration=0;
foreach($tagarray作为$tag){?>
,
您将看到
后面有一个,
逗号。如果输出如下所示,显然这看起来很奇怪:
tag1、tag2、tag3、
后面是逗号。所以我想我可以把它放在逗号当前所在的位置:
您可以缓冲您的输出(标记)。假设您将它们放在一个数组中
array_push($myTags,.$tag.');
当你想显示它们时,你只需内爆(“,”,$myTags)
或您可以将它们缓冲在一个字符串中,然后在该字符串上使用substr()
,直到去掉最后一个逗号。
就我个人而言,我建议使用数组。如果您想手动执行此操作,只需在第一个标记之外的任何标记前面加上逗号。使用控制变量检测第一个标记
$iteration = 0;
$first=true;
foreach ($tagarray as $tag) { ?>
<div class="tagbutton listv">
<span><?php
if($first){$first=false;}
else{echo ",";}
echo $tag;
?></span>
</div>
<?php
$iteration++;
if ($iteration == 4) {
break;
}
} ?>
$iteration=0;
$first=true;
foreach($tagarray作为$tag){?>
如果要使用库函数,请按照Cetra和Bogdan的建议使用内爆
。使用可以更好地将此类内容输出到字符串,并可用于返回前四个元素。假设您的数组称为tagarray:
echo "<span>" . implode("</span>,<span>", array_slice($tagarray,0,4)) . "</span>";
echo”“。内爆(“,”,数组_切片($tagarray,0,4));
显然,将“胶水”更改为您想要的。这样就不需要foreach循环,而且可能会更快。我将分离对4个元素进行切片、转换每个元素以及将转换后的结果合并在一起的关注点。这将使您的代码更具可读性
// take 4 elements
$firstelements=array_slice( $tags, 0, 4 );
// how to transform an element
function tag_span($tag) {
return "<span>$tag</span>";
}
// transform all needed elements
$spans=array_map( tag_span, $firstelements );
// join them together
$result=implode( ", ", $spans );
// output the result
echo $result;
//取4个元素
$firstelements=array\u slice($tags,0,4);
//如何转换元素
功能标签\u span($tag){
返回“$tag”;
}
//转换所有需要的元素
$spans=数组映射(标记span$firstelements);
//把他们连在一起
$result=内爆(“,”,$spans);
//输出结果
回声$结果;
基于您的代码的解决方案将是
$iteration = 0;
$processarr = array_slice($tagarray,0,4); //get tags you need,4 or less
foreach ($processarr as $tag) { ?>
<div class="tagbutton listv">
<span><?php echo $tag; ?></span>,
</div>
<?php
$iteration++;
if($iteration < count($processarr)) echo ",";
}?>
$iteration=0;
$processarr=array_slice($tagarray,0,4);//获取所需的标记,4个或更少
foreach($processarr作为$tag){?>
,
(学分:在添加我自己的酱汁之前,将Bogdan Constantinescu和Pekka的答案组合在一起)哇!代码绝对更具可读性,我不会想到这样做。见解深刻!我选择这作为公认的答案,因为我在网站的这一部分与一位没有PHP经验的设计师一起工作,我认为这种方法对他来说是最具可读性/最不容易混淆的。谢谢你的帮助!我也从所有其他建议的答案也是:)