PHP foreach with counter和IF语句

时间:2013-11-20 22:05:33

标签: php if-statement foreach counter

我试图在PHP中使用FOREACH循环来输出不同的消息,具体取决于数组中值的位置。我的代码如下:

$qtyValidFiles = count($validFiles);
$tick = 0;
                 foreach($validFiles AS $validItem)
                {
                    if($tick = 0)
                    {
                    echo"'#$validItem,";
                    }
                    elseif($tick < $qtyValidFiles -1 && $tick != 0)
                    {
                    echo"#$validItem,";
                    }
                    elseif($tick = $qtyValidFiles -1)
                    {
                    echo"#$validItem'";
                    }
                }; $tick++;

在这种情况下,$qtyValidFiles有4个值。

上面的代码返回:

#Games'#Movies'#Music'#TV' 

向我建议$tick始终被视为价值3

3 个答案:

答案 0 :(得分:0)

$tick始终为0,因为$tick++;位于循环之外。把它向上移动一线。

同样如Rahul Kumar所述,使用==作为比较运算符。

或者只是这样做,不需要循环:

echo '#' . implode(',#', $validFiles);

答案 1 :(得分:0)

如果$validFiles是索引数组,您可以执行以下操作:

foreach ($validFiles as $tick => $validItem)

而不是自己递增$tick

但是你的整个循环是不必要的。你可以这样做:

echo "'" . implode(",", array_map(function($x) { return "#$x"; }, $validFiles)) . "'";

这应该比你的代码更好,因为如果数组只有1项,你就不会做正确的事情;你会打印起始引号和逗号,但我认为你真的想要一个被引号包围的元素。

答案 2 :(得分:0)

似乎与您的代码相比更简单和正确的是:

$qtyValidFiles = count($validFiles);
$str = '';
foreach($validFiles AS $validItem) {
   $str .= "#$validItem,";
}
if (!empty($str)) {
   echo "'" . substr($str, 0, -1) . "'"; //removes the last ","
}