带计数器和IF语句的PHP foreach

带计数器和IF语句的PHP foreach,php,if-statement,foreach,counter,Php,If Statement,Foreach,Counter,我试图在PHP中使用FOREACH循环,根据值在数组中的位置输出不同的消息。我的代码如下: $qtyValidFiles = count($validFiles); $tick = 0; foreach($validFiles AS $validItem) { if($tick = 0) { echo"'#$va

我试图在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++;

这对我来说意味着,
$tick
总是被视为值
3
$tick
总是
0
,因为
$tick++在循环之外。上移一行

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

或者只需执行此操作,无需循环:

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

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

foreach ($validFiles as $tick => $validItem)
echo "'" . implode(",", array_map(function($x) { return "#$x"; }, $validFiles)) . "'";
而不是自己增加
$tick

不过,您的整个循环是不必要的。你可以做:

foreach ($validFiles as $tick => $validItem)
echo "'" . implode(",", array_map(function($x) { return "#$x"; }, $validFiles)) . "'";

这应该比您的代码更好,因为如果数组正好有1项,您就没有做正确的事情;您可以打印开头的引号和一个逗号,但我认为您确实需要一个由引号括起来的元素。

似乎与您的代码相对应的更简单、正确的等效代码是:

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

在if语句中使用$tick==0比较运算符为
=
。您正在循环外递增
$tick
。哈哈,我刚才看到了您正在尝试做的事情。查看我的编辑
内爆()