Php 从foreach数组结果中删除最后一个逗号

Php 从foreach数组结果中删除最后一个逗号,php,foreach,Php,Foreach,我有一个小函数,让我更新通过表单提交的任何表和任何值。这是供个人使用,不需要安全保护。但是我需要从脚本中删除最后一个逗号。首先,代码如下: public function updateForm($table, $formValues, $formID) { foreach ($formValues as $key => $val) { $form = "$key = '$val', "; $this->mysqli->query(

我有一个小函数,让我更新通过表单提交的任何表和任何值。这是供个人使用,不需要安全保护。但是我需要从脚本中删除最后一个逗号。首先,代码如下:

public function updateForm($table, $formValues, $formID)
{
    foreach ($formValues as $key => $val)
    {
        $form = "$key = '$val', ";
        $this->mysqli->query("UPDATE `$table` SET $form WHERE id = '$formID'");
    }
}
如果我提交名为
field1
field2
field3
的三个字段,其中包含值
test1
test2
test3
,则
$form
如下所示:

field1='test1',field2='test2',field3='test3'

但最后一个逗号必须去掉。我将如何做到这一点?我已经尝试了我能想到的一切,包括
rtrim($form,”)-但这也不会从填充的值中删除最后一个逗号


任何朝着正确方向推进都将不胜感激:)

首先带来
$this->mysqli->query(“更新
$table
设置$form,其中id='$formID'”
foreach
循环之外

现在,您可以在foreach循环中遍历数组时检查最后一个索引if数组

public function updateForm($table, $formValues, $formID)
{
    foreach ($formValues as $key => $val)
    {
        $last_key = key( array_slice( $array, -1, 1, TRUE ) ); // Checks for array last index
        if ('key' == $last_key) {
            $form = "$key = '$val', ";      
        }
        else
            $form = "$key = '$val' ";
    }

    $this->mysqli->query("UPDATE `$table` SET $form WHERE id = '$formID'");
}
这将为您提供如下输出

field1 = 'test1', field2 = 'test2', field3 = 'test3'
您也可以使用
end()
获取最后一个索引,但是,
array\u slice()
end()更快

使用end()检查最后一个索引


首先带来
$this->mysqli->query(“更新
$table
设置$form,其中id='$formID')
foreach
循环之外

现在,您可以在foreach循环中遍历数组时检查最后一个索引if数组

public function updateForm($table, $formValues, $formID)
{
    foreach ($formValues as $key => $val)
    {
        $last_key = key( array_slice( $array, -1, 1, TRUE ) ); // Checks for array last index
        if ('key' == $last_key) {
            $form = "$key = '$val', ";      
        }
        else
            $form = "$key = '$val' ";
    }

    $this->mysqli->query("UPDATE `$table` SET $form WHERE id = '$formID'");
}
这将为您提供如下输出

field1 = 'test1', field2 = 'test2', field3 = 'test3'
您也可以使用
end()
获取最后一个索引,但是,
array\u slice()
end()更快

使用end()检查最后一个索引


另一种不需要任何计数的方法

<?php

$string = null;
foreach ($array as $key => $value) {
  $string && ($string .= ", ");
  $string .= "{$key} = '{$value}'";
}

另一种不需要任何计数的方法

<?php

$string = null;
foreach ($array as $key => $value) {
  $string && ($string .= ", ");
  $string .= "{$key} = '{$value}'";
}

构建一个包含
key='val'
字符串的数组。使用。问题解决了。rtrim($form,,')呢?注意空格。Thoronwen,删除了所有逗号:)深色Absol,听起来不错,会尝试的谢谢:DDark Absol,工作得很有魅力,再次感谢:)所有这些方法都比循环慢,因为它们也循环,而且你有函数调用开销。构建一个
key='val'
字符串数组。使用。问题解决了。rtrim($form,,')呢?注意空格。Thoronwen,删除了所有逗号:)深色Absol,听起来不错,会尝试的谢谢:DDark Absol,工作得很有魅力,再次感谢:)所有这些方法都比循环慢,因为它们也循环,而且你有函数调用开销。