Zach Smith
Zach Smith

Reputation: 8961

removing last comma from string rtrim

Can't seem to get rtrim to work and I don't understand why:

$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 .= ";";

Why would this not get rid of the last comma?

it keeps printing out this:

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

Upvotes: 1

Views: 267

Answers (3)

Hmmm
Hmmm

Reputation: 1764

You forgot to overwrite $sql variable with rtrim result

 $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 .= ";";

Upvotes: 0

MH2K9
MH2K9

Reputation: 12039

Better way is to use implode(). Example:

$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;
}

Output:

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

Upvotes: 1

Rizier123
Rizier123

Reputation: 59681

You have to assign the rtrim to $sql like that:

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

Upvotes: 3

Related Questions