似乎无法让 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 .= ";";