首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP foreach循环

PHP foreach循环
EN

Stack Overflow用户
提问于 2010-08-20 04:41:11
回答 10查看 557关注 0票数 3

我有下面的数组示例,我正在使用它根据表单中勾选的选项动态创建SQL查询。下面的代码测试是否有值,如果有,则将其追加到数组中:

代码语言:javascript
复制
if ($lookchild) { $val[]='lookchild'; }
if ($mentalcap) { $val[]='mentalcap'; }
if ($mentalheal) { $val[]='mentalheal'; }
if ($olderpeople) { $val[]='olderpeople'; }
if ($palcare) { $val[]='palcare'; }

然后,我循环遍历数组并添加SQL语句的其余部分:

代码语言:javascript
复制
foreach ($val as $r){
    echo $r.'=1 AND ';
}   

这会产生以下结果:

代码语言:javascript
复制
olderpeople=1 AND palcare=1 AND lookchild=1 AND

当循环到达最后一个条目时,我不希望它将和附加到它后面,因为SQL语句需要在该点之后结束。

我希望它如何完成:

代码语言:javascript
复制
olderpeople=1 AND palcare=1 AND lookchild=1
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-08-20 04:44:11

Implode

在这些情况下,您可以使用implode

它将一个数组“粘合”在一起。

数组内爆( string $glue,

$pieces )

示例:

代码语言:javascript
复制
echo implode('=1 AND ', $val);
echo '=1';
票数 10
EN

Stack Overflow用户

发布于 2010-08-20 04:44:33

一个常见的技巧是使用'WHERE 1=1‘,然后你可以在后面加上’AND foo = bar‘,而不会出现语法错误。

代码语言:javascript
复制
WHERE 1=1 AND olderpeople=1 AND palcare=1 AND lookchild=1
票数 3
EN

Stack Overflow用户

发布于 2010-08-20 04:44:33

这就是的用途:

代码语言:javascript
复制
$result = array();
foreach ($val as $r){
    $result[] = "$r=1";
}
$result = implode($result, ' AND ');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3526035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档