如何使用php在for循环的最后一次迭代中删除一些字符?

如何使用php在for循环的最后一次迭代中删除一些字符?,php,Php,但我想在最后一次迭代中删除NOTNULL之后的值 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,

但我想在最后一次迭代中删除NOTNULL之后的值

      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,
       );
我添加了条件以检查它是否是最后一个条件。

请尝试以下代码:

 $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){
          $x.=$y;
     } else {
          $x.=$y.",";
     }

}
$sql= $x.')";';
echo $sql."<br /><br />";

以下是其他几种方法:

$x = $arr;
array_walk($x, function(&$value, $key) { $value = '`' . $value . '` VARCHAR(30) NOT NULL'; });
$sql = '"CREATE TABLE MyGuests (' . implode(',', $x) . ')";';
或:

最佳解决方案是在最后一次迭代后使用substr

$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 />";
哦,常见的,5个答案,最佳解决方案是使用subsrt? 这个

将在一个字符串中执行完全相同的操作


我非常喜欢第二种方法,它构建一个列表,然后很好地连接起来。但这只是我的问题:从技术上讲,如果$arr为空,那么这将失败,因为它将从第一个字符串中删除。对了Jon,谢谢你的指点,请更新相同的答案
$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.')";';
$x = $arr;
array_walk($x, function(&$value, $key) { $value = '`' . $value . '` VARCHAR(30) NOT NULL'; });
$sql = '"CREATE TABLE MyGuests (' . implode(',', $x) . ')";';
$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";
     $x.=$y.",";

 }
if(!empty($arr)) {
    $x = substr($x, 0, -1);
}
 $sql= $x.')";';
 echo $sql."<br /><br />";
if($i+1 == count($arr)){
    $x.=$y.",";
} else {
    $x.=$y.",";
}
$sql = '"CREATE TABLE MyGuests (`'.implode("` VARCHAR(30) NOT NULL,`", $arr).'` VARCHAR(30) NOT NULL)";';