我在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行。有一个我以前用来打印的逗号。现在我不想在最后一行打印逗号。
答案 0 :(得分: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);
答案 1 :(得分:1)
循环之后,您可以使用trim()
函数删除尾随逗号:
$sql = trim($sql, ',');
答案 2 :(得分:0)
最后这样做:
$sql = substr($sql, 0, strlen($sql)-1);
这不会打印最后一个逗号。
答案 3 :(得分: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}'),";
}
}