$x='"CREATE TABLE MyGuests (';
for($i=0; $i<count($arr);$i++)
{
$y="`$arr[$i]` VARCHAR(30) NOT NULL";
$x.=$y.",";
}
$sql= $x.')";';
echo $sql."<br /><br />";
它产生以下结果
CREATE TABLE MyGuests
(author VARCHAR(30) NOT NULL,
title VARCHAR(30) NOT NULL,
genre VARCHAR(30) NOT NULL,
price VARCHAR(30) NOT NULL,
publish_date VARCHAR(30) NOT NULL,
description VARCHAR(30) NOT NULL,
);
但是我想在最后一次迭代中删除 NOT NULL 之后的","
最佳解决方案是在上次迭代后使用substr
$x='"CREATE TABLE MyGuests (';
for($i=0; $i<count($arr);$i++)
{
$y="`$arr[$i]` VARCHAR(30) NOT NULL";
$x.=$y.",";
}
if(!empty($arr)) {
$x = substr($x, 0, -1);
}
$sql= $x.')";';
echo $sql."<br /><br />";
或者你也可以像这样在循环中放置一个 if 条件
if($i+1 == count($arr)){
$x.=$y.",";
} else {
$x.=$y.",";
}
尝试以下代码:
$x='"CREATE TABLE MyGuests (';
for($i=0; $i<count($arr);$i++)
{
$y="`$arr[$i]` VARCHAR(30) NOT NULL";
if($i == count($arr)-1){
$x.=$y;
} else {
$x.=$y.",";
}
}
$sql= $x.')";';
echo $sql."<br /><br />";
以下是其他几种方法:
$x = '';
for ($i = 0; $i < count($arr); $i++)
{
$y = "`${arr[$i]}` VARCHAR(30) NOT NULL";
$x .= ($x ? '' : ',') . $y;
}
$sql = '"CREATE TABLE MyGuests (' . $x . ')";';
echo $sql . "<br /><br />";
或:
$cols = array();
for ($i = 0; $i < count($arr); $i++)
{
$cols[] = "`${arr[$i]}` VARCHAR(30) NOT NULL";
}
$sql = '"CREATE TABLE MyGuests (' . implode(',', $cols) . ')";';
echo $sql . "<br /><br />";
$x='"CREATE TABLE MyGuests (';
for($i=0; $i<count($arr);$i++)
{
$y="`$arr[$i]` VARCHAR(30) NOT NULL";
if($i!=count($arr)-1)
$x.=$y.",";
}
$sql= $x.')";';
echo $sql."<br /><br />";
我添加了条件以检查它是否是最后一个。
你可以这样做:
$x='"CREATE TABLE MyGuests (';
for($i=0; $i<count($arr);$i++)
{
$y="`$arr[$i]` VARCHAR(30) NOT NULL";
if ($i < count($arr)-1) // check if it's the last element or not
$x.=$y.",";
else
$x=$y;
}
$sql= $x.')";';
或者这个:
$x='"CREATE TABLE MyGuests (';
for($i=0; $i<count($arr);$i++)
{
$y="`$arr[$i]` VARCHAR(30) NOT NULL";
$x.=$y.",";
}
$x = rtrim($x, ",") // remove the last comma
$sql= $x.')";';
甚至更好的是,只需使用 implode
将数组转换为逗号分隔的字符串。喜欢这个:
$x = $arr;
array_walk($x, function(&$value, $key) { $value = '`' . $value . '` VARCHAR(30) NOT NULL'; });
$sql = '"CREATE TABLE MyGuests (' . implode(',', $x) . ')";';
哦,常见的,5个答案和最佳解决方案是使用subsrt?这
$sql = '"CREATE TABLE MyGuests (`'.implode("` VARCHAR(30) NOT NULL,`", $arr).'` VARCHAR(30) NOT NULL)";';
将在一个字符串中执行完全相同的操作
菲菲德尔