从FOREACH循环中删除最后一个单词

Sto*_*osh 4 php foreach

我正在构建一个基本函数,它根据数组中的数量来构建Mysql WHERE子句.

$array = array('id' => '3', 'name' => 'roger'); 
$sql = "SELECT * FROM table WHERE ";

foreach ($array as $k => $v) {
    $sql .= $k . ' = ' . $v . ' AND ';
}
Run Code Online (Sandbox Code Playgroud)

哪个会输出

SELECT * FROM table WHERE id = 3 AND name = roger AND

但显然我不想要最后一个AND,我该如何从字符串中删除它?

谢谢

Cas*_*Chu 12

你可以做到

$sql = substr($sql, 0, -5);
Run Code Online (Sandbox Code Playgroud)

但也许更优雅的解决方案是

$array = array('id' => '3', 'name' => 'roger'); 
$clauses = array();

foreach ($array as $k => $v)
    $clauses[] = $k . ' = ' . $v;

$sql = "SELECT * FROM table WHERE " . implode(' AND ', $clauses);
Run Code Online (Sandbox Code Playgroud)