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

时间:2014-07-08 13:03:47

标签: php foreach

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

public function updateForm($table, $formValues, $formID)
{
    foreach ($formValues as $key => $val)
    {
        $form = "$key = '$val', ";
        $this->mysqli->query("UPDATE `$table` SET $form WHERE id = '$formID'");
    }
}

如果我提交名为field1field2field3的3个字段,其中包含值test1test2test3$form将如下所示:

  

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

但最后一个逗号需要消失。我怎么做到这一点?我已经尝试了我能想到的一切,包括rtrim($form,','); - 但这也不会从填充的值中删除最后一个逗号。

任何向正确方向的推动都将非常感激:)

2 个答案:

答案 0 :(得分:2)

首先将$this->mysqli->query("UPDATE $ table SET $form WHERE id = '$formID'");置于foreach循环之外。

现在,您可以在foreach循环中遍历它时检查最后一个索引是否为数组。

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_slice()end()

更快

使用end()

检查最后一个索引
end(array_keys($myarr))

答案 1 :(得分:2)

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

<?php

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

这总是有效且非常快。