foreach构造

时间:2013-02-21 11:55:26

标签: 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."'".','."'".$option_value."'".','."'".$rows->autoload."'".')'.",";
}

查看第3行。有一个我以前用来打印的逗号。现在我不想在最后一行打印逗号。

4 个答案:

答案 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}'),";
    }
}