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
之后添加这个。这只是删除最后一个逗号吗,对不起,我只需要最后一个逗号,这将仅在字符串开头或结尾出现逗号时修剪所有逗号。它将删除所有前导和尾随逗号。这可能不止一个,但在您的例子中,字符串以括号开始,以括号和逗号结束,因此只有最后一个逗号将被删除。