从字符串 rtrim 中删除最后一个逗号


removing last comma from string rtrim

似乎无法让 rtrim 工作,我不明白为什么:

$array = array("top" => array("one" => "inner one", "two" => "inner two"));
foreach (array_keys($array) as $key) {
  $form[$key] = array();
  $sql = "INSERT INTO $key SET ";
  foreach (array_keys($array[$key]) as $field) {
    array_push($form[$key], $field);
    $sql .= $field." = '".$array[$key][$field]."',";
  }
}
  rtrim($sql,',');
  $sql .= ";";

为什么这不能去掉最后一个逗号?

它不断打印出这个:

INSERT INTO top SET one = 'inner one',two = 'inner two',;
您必须像

这样将rtrim分配给$sql

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

更好的方法是使用 implode() 。例:

$array = array("top" => array("one" => "inner one", "two" => "inner two"));
foreach($array as $key=>$val){
    $form = array();
    $sql = "INSERT INTO $key SET ";
    foreach ($val as $k=>$field) {
        array_push($form, $k."='".$field."'");
    }
    $sql .= implode(",",$form);
    //echo $sql;
}

输出:

INSERT INTO top SET one='inner one',two='inner two'

您忘记用 rtrim 结果覆盖$sql变量

 $array = array("top" => array("one" => "inner one", "two" => "inner two"));
 foreach (array_keys($array) as $key) {
   $form[$key] = array();
   $sql = "INSERT INTO $key SET ";
   foreach (array_keys($array[$key]) as $field) {
     array_push($form[$key], $field);
     $sql .= $field." = '".$array[$key][$field]."',";
   }
 }
 $sql = rtrim($sql,',');
 $sql .= ";";