2010-08-06 75 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