Php foreach构造

Php foreach构造,php,Php,在foreach循环中,我几乎没有混淆 我的以下代码中有一个foreach: foreach ($myrows as $rows){ $option = $rows->option_value; $option_value = recursive_unserialize_replace($site_url,$_POST['url_name'],$option); $sql.= '('."'".$rows->option_name."'".','."'".$op

foreach
循环中,我几乎没有混淆

我的以下代码中有一个
foreach

foreach ($myrows as $rows){
    $option = $rows->option_value;
    $option_value = recursive_unserialize_replace($site_url,$_POST['url_name'],$option);
    $sql.= '('."'".$rows->option_name."'".','."'".$option_value."'".','."'".$rows->autoload."'".')'.",";
}

看3号线。我以前打印过一个逗号。现在,我不想在最后一行中打印逗号。

只需在末尾执行以下操作:

$sql = substr($sql, 0, strlen($sql)-1);
这不会打印最后一个逗号。

请尝试以下操作:

$array = array();

foreach ($myrows as $rows){
   $option = $rows->option_value;
   $option_value = recursive_unserialize_replace($site_url,$_POST['url_name'],$option);
   $array[] = '('."'".$rows->option_name."'".','."'".$option_value."'".','."'".$rows->autoload."'".')';
}

$sql = join(', ', $array);

循环结束后,可以使用
trim()
函数删除尾随逗号:

$sql = trim($sql, ',');

如果您想再少做一次操作,更好地利用内存和性能,还可以检查foreach的指针在哪里:

foreach ($myrows as $rows){
    $option = $rows->option_value;
    $option_value = recursive_unserialize_replace($site_url,$_POST['url_name'],$option);
    if ($rows === end($myrows)){
        $sql.= "('{$rows->option_name}','{$option_value}','{$rows->autoload}')";
    }else{
        $sql.= "('{$rows->option_name}','{$option_value}','{$rows->autoload}'),";
    }
}

所以把逗号从代码中去掉?我想你没有明白我的问题吧?先生,我想在我输出的每一行都加上逗号。只是我不想在输出的最后一行。我必须在foreach循环之间添加什么?你需要在
foreach
之后添加这个。这只是删除最后一个逗号吗,对不起,我只需要最后一个逗号,这将仅在字符串开头或结尾出现逗号时修剪所有逗号。它将删除所有前导和尾随逗号。这可能不止一个,但在您的例子中,字符串以括号开始,以括号和逗号结束,因此只有最后一个逗号将被删除。