2010-08-06 77 views
0

HELLO结合阵列PHP

SORRY法语,我会尝试英语 我有树阵这样

$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 

我为什么要问,因为我需要S代表的多查询filtres

用户按下一个(+)按钮添加键+运算+查询许多时间,因为他喜欢

我使用jQuery创建形式的元件,并且每一个()函数生成3个阵列 所有张贴到PHP

如果有人知道一个最好的方法则欢迎前非常感谢你

+0

这是什么语言?请用英文写下你的问题。 – Sarfraz 2010-08-06 21:03:47

+0

它的法语 – 2010-08-06 21:05:20

+0

我足够了解这是法语,但还不足以知道问题是什么。 – jergason 2010-08-06 21:05:59

回答

2

卓悦,

这里是代码。尝试和测试。 Voila le code ... essayer avecsuccé

$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; 
+0

关注le代码“foreach($加入为$ key =>&$ value)”avant $ value il y a“&”。 cela remet la valeurattachédans $ joined。 在$ value前面有一个'&',它将这个值存储回数组$ join。 – Anand 2010-08-07 07:08:31

+0

使用“查看源文件”查看实际的输出..在“<' and '>”的招牌隐藏在浏览器 – Anand 2010-08-07 07:16:01

+0

字符串太感谢你了阿南德,这个工作非常 我和随机阵列进行测试,这只是工作 感谢 – cranberies 2010-08-07 14:44:39

4

你问法国的一个问题,我会在英语答案,你可以使用谷歌如果您需要翻译,请翻译。首先,你需要连接这些部分。首先,你需要连接这些部分。[编辑]请注意0​​,这使整个操作更安全一些。

$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) . ')'; 
+0

thanx为您的回应并为我的法语 感到抱歉您的代码非常方便,但是这将为所有密钥添加OR 我想要做的仅限于重复密钥 并且默认情况下使用AND非重复的: $字符串=“选择从表 WHERE (elment1 = QUERY1 OR elment1 query3“; – cranberies 2010-08-06 23:15:54