Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(初学者';的问题)在PHP中通过数组进行回音,仅根据特定条件添加逗号_Php_Arrays_Iterator - Fatal编程技术网

(初学者';的问题)在PHP中通过数组进行回音,仅根据特定条件添加逗号

(初学者';的问题)在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

我知道,这是非常基本的!对不起,只是其中的一天

我从数据库中收集了一组标签。此数组中可能有任意数量的标记。但是,我只想输出4

所以我现在有这个代码:

$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经验的设计师一起工作,我认为这种方法对他来说是最具可读性/最不容易混淆的。谢谢你的帮助!我也从所有其他建议的答案也是:)