具有连接分配的Foreach循环

时间:2018-03-27 19:52:18

标签: php arrays loops foreach null

<?php
$names =array('Alex','Billy','Tabby');
$names_str=null;
foreach($names as $key => $names)
{
    $names_str .= $name;
    if(key!= (count($names)-1))
    {
        $names_str.=', ';
    }
}
echo $names_str;
?>

为什么我们设置names_str = null? 为什么我们把count($ names-1))这个循环如何工作?

1 个答案:

答案 0 :(得分:2)

<?php
$names = array('Alex','Billy','Tabby');
$names_str = null;
foreach($names as $key => $names)
{
    $names_str .= $name;
    if(key != (count($names) - 1))
    {
        $names_str .=', ';
    }
}
echo $names_str;
?>

为什么我们设置$names_str = null

它正在循环之外进行初始化。如果这是一个要返回的字符串,那么技术上如果你想要显示一个默认值并且不进行某种空/空检查,那么$names_str = "";会更好。

为什么我们放count($names-1))

这会检查密钥#例如(0,1,2)对数组的计数/长度减1(数组从0开始),看看我们是否引用数组中的最后一个键/值对,以确定字符串是否应该显示逗号是否为当前值和下一个值。如果它是最后一个值,我们不想显示&#34;,&#34;在字符串的末尾。

此循环如何工作?

$names_str .= $name;$name值连接到初始字符串,if / key检查每个值之间是否有逗号。见上面关于计数。因此,您最终将"Alex, Billy, Tabby"作为$names_str的最终值。

更好的方法是使用PHP的implode函数:

$comma_separated = implode(",", $names);

这会给你相同的逗号分隔列表。