0

我在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 行。有一个逗号是我用来打印的。现在我不想在最后一行打印逗号。

4

4 回答 4

9

试试这个:

$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);
于 2013-02-21T11:59:04.097 回答
1

在循环之后,您可以使用以下trim()函数删除尾随逗号:

$sql = trim($sql, ',');
于 2013-02-21T12:01:24.193 回答
0

只需在最后执行此操作:

$sql = substr($sql, 0, strlen($sql)-1);

这不会打印最后一个逗号。

于 2013-02-21T11:57:46.167 回答
0

如果您想要更少的操作并更好地使用内存和性能,您还可以检查 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}'),";
    }
}
于 2015-01-14T13:20:46.693 回答