【问题标题】:Combine arrays PHP组合数组 PHP
【发布时间】:2010-08-06 21:01:57
【问题描述】:

你好

对不起法语,我会试试英语 我有这样的树数组

$keys = array("elment1","elment1","elment2","elment1");
// this one can have duplicates values , 

$operator = array("=","<",">","=");
// operators for Mysql query 

$queries = array("query1","query2","query3","query4");
// mixtes values

问题是:

我怎样才能像这样组合这个树数组:

$string = "SELECT FROM tables 
           WHERE
           (elment1 = query1 OR elment1<query2 OR elment1=query4)
           // need group duplicates keys 
           AND
           elment2 > query3";
           // non duplicates 

我为什么要问这个,因为我需要这个来进行多查询过滤

用户按(+)按钮添加键+操作符+查询多次,因为他喜欢

我正在使用 jquery 创建表单元素,并使用 each() 函数生成 3 个数组 在将所有内容发布到 php 之前

如果有人知道最好的方法,那么欢迎并非常感谢你

【问题讨论】:

  • 这是什么语言?请用英文写下您的问题。
  • 我知道它是法语,但不足以知道问题是什么。
  • 谷歌翻译:bit.ly/clD20G
  • 我知道的足以回答这个问题,但是如果我用英语回答他会生气吗?
  • 我知道足够多的 PHP 可以为他的具体示例编写代码,但我不懂法语来解释为什么我认为他需要重新考虑他的想法

标签: php javascript jquery arrays


【解决方案1】:

您用法语提问,我会用英语回答,如果您需要翻译,可以使用 Google 翻译。 [Utilisez Google Translate pour traduire cette réponse si vous voulez。]

首先,您需要连接各个部分。注意mysql_real_escape_string,让整个操作更安全一点。

$joined = array();
for($i = 0, $size = sizeof($keys); $i < $size; ++$i) {
    $joined[$i] = $keys[$i] . " " . $operator[$i] . " '" . mysql_real_escape_string($queries[$i]) . "'";
}

那么你可以使用implode:

$string = 'SELECT [...] WHERE (' . implode(' OR ', $joined) . ')';

【讨论】:

  • 感谢您的回复,并为我的法语感到抱歉,您的代码非常方便,但这将为我想要的所有键添加 OR 仅用于重复键,默认情况下使用 AND 用于非重复键:$ string = "SELECT FROM tables WHERE (elment1 = query1 OR elment1 query3";
【解决方案2】:

你好,

这里是代码。久经考验。 瞧,代码...散文家 avec succé

$keys = array("elment1","elment1","elment2","elment1");
// this one can have duplicates values , 
$operator = array("=","<",">","=");
// operators for Mysql query 
$queries = array("query1","query2","query3","query4");
// mixtes values

$joined = array();
for($i = 0, $size = sizeof($keys); $i < $size; ++$i)
{
    $joined[$keys[$i]][] = $keys[$i] . $operator[$i] . $queries[$i];
}

foreach ($joined as $key => &$value)
{
    $value = implode(' OR ', $value);
    $value = "(" . $value . ")";
}
$query = implode(' AND ', $joined);
print $query;

【讨论】:

  • 注意一个文件代码 "foreach ($joined as $key => &$value)" avant $value il y a "&"。 cela remet la valeur attaché dans $joined。在 $value 前面有一个 '&' 这会将值存储回 $joined 数组。
  • 使用'view source'查看实际输出。''符号在浏览器中隐藏字符串
  • 非常感谢阿南德,这项工作非常完美,我已经用随机数组进行了测试,谢谢
  • 我终于把你的代码集成到我的应用程序中了,谢谢它就像我例外一样工作,干得好
猜你喜欢
  • 2010-11-28
  • 2011-04-14
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多