环之间插入代码的优雅方法
在Web开发中,我经常发现我需要格式化和打印各种数据数组,并以某种方式分离这些数据块。换句话说,我需要能够在每个循环的之间插入代码,而不是在第一个条目之前或最后一个之后插入所述代码。我发现做到这一点,最优雅的方式如下:环之间插入代码的优雅方法
function echoWithBreaks($array){
for($i=0; $i<count($array); $i++){
//Echo an item
if($i<count($array)-1){
//Echo "between code"
}
}
}
不幸的是,有没有办法,我可以看到实现与的foreach而不是为此解决方案。有谁知道一个更优雅的解决方案,将与foreach一起工作?
我认为您正在寻找implode函数。
然后只是回显内爆的字符串。
唯一的更优雅我能想到的是制作精确算法是这样的:
function implodeEcho($array, $joinValue)
{
foreach($array as $i => $val)
{
if ($i != 0) echo $joinValue;
echo $val;
}
}
当然,这是假设$阵列仅由整数,而不是由键索引。
不幸的是,我不认为有什么办法可以用foreach
来做到这一点。这是许多语言的问题。
我通常解决这一两种方式:
- 你上面提到的方式,除了与
$i > 0
而非$i < count($array) - 1
。 - 使用
join
或implode
。
您的第一个解决方案非常有用。谢谢。 – 2010-06-17 00:14:36
一招我有时用:
function echoWithBreaks($array){
$prefix = '';
foreach($array as $item){
echo $prefix;
//Echo item
$prefix = '<between code>';
}
}
不,它不!这与Wrikken的答案类似,除了它不需要if。 – Artelius 2010-06-17 00:20:18
哎呦。对不起 - 误读。这是一个合法的解决方案 - 不过,正如我告诉Wrikken,foreach循环之外的初始化变量让我有点畏缩。感谢您的回应。 – 2010-06-17 00:43:01
如果更复杂的代码,那么破灭可能处理我会使用一个简单的布尔:
$looped = false;
foreach($arr as $var){
if($looped){
//do between
}
$looped = true;
//do something with $var
}
我在理论上喜欢这个答案,在发布之前我用它玩了一段时间,但是在我看来,必须在循环外部定义变量使得它比使用简单for循环更不干净。感谢您的意见。 – 2010-06-17 00:13:52
这将做工精美,如果我只需要在单词或单词之间插入某些内容。然而,我需要分离大块代码,并且围绕一段不确定长度的代码块使大块HTML大量混乱。我很抱歉,如果从使用HTML块的问题不明确。 – 2010-06-17 00:00:27
更新了我的回复。 – Aren 2010-06-17 00:06:02
有趣的更新。这可能正是我需要的。谢谢! – 2010-06-17 00:11:41