2016-03-04 127 views
-1

我的陣列如何檢查這已經是一個數組中嵌套的foreach在PHP

$key1=> 
Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 7 
    [3] => 11 
    [4] => 12 
    [5] => 17 
    [6] => 18 
) 

$_POST['name']=> 
Array 
(
    [0] => General 
    [1] => General 
    [2] => Outdoors 
    [3] => Dining 
    [4] => Kitchen 

) 

這裏是我的代碼通過與否的電流值,

 foreach ($key1 as $key => $value) { 
     // echo $value; 
       foreach ($_POST['name'] as $key => $value1) { 
        //echo $value; 
        $subQueryCond .=' AND '.$value1.' LIKE ' .$value ; 
         } 
     } 

雖然我的Ajax調用這個嵌套循環發生.. 在這裏我寫了一個查詢.. 如果一個值被傳遞。查詢格式爲AND 'General' LIKE 1

如果在$key1中傳遞了另一個值,則它將兩次傳遞查詢。

這就像多少陣列給出的那麼多時間查詢傳遞..

所以,在這裏我想限制$value,如果它已經來了..

如果分別給予兩個值,它通過查詢以下方式

AND General LIKE 1 

AND Outdoors LIKE 1 

AND General LIKE 7 

AND Outdoors LIKE 7 

而我所需的查詢必須在

AND General LIKE 1 

AND General LIKE 7 

AND Outdoors LIKE 7 
形式

有人可以幫助我..

+0

我不清楚什麼輸入應該導致什麼輸出,你可以舉一些例子嗎? – jeroen

+0

我認爲它'和一般喜歡2' – devpro

+0

基本上她需要$ key1數組的唯一值,如果我沒有錯的話。正如你可以在她的例子輸出中看到的那樣,'General'是'LIKE'後面重複的,但不是數字'LIKE' –

回答

0

這會爲你工作.. 。

<?php 

$subQueryCond= ''; 
foreach ($key1 as $key => $value) 
{ 
    foreach ($_POST['name'] as $key => $value1) 
    { 
    $subQueryCond['AND '.$value1.' LIKE ' .$value] = ' AND '.$value1.' LIKE ' .$value ; 
    } 
} 
echo "<pre>"; print_r($subQueryCond); 
$query = implode('',$subQueryCond) ; 
print_r($query); 

?> 

只是使用唯一鍵值來創建一個數組,然後使用implode()函數使查詢字符串...

+0

非常感謝你@Manjeet Barnala ..但是我對查詢有疑問..那我怎麼可以用下面的格式'AND'來編寫查詢'LIKE'%$ value%'''$ value1。' LIKE'。$ value' –

+0

替換此行'$ subQueryCond ['AND'。$ value1。' LIKE'。$ value] ='AND'。$ value1。' LIKE「%」。$ value。'%'';' –

1

使用此代碼從一個數組中刪除重複:

$uniqueKey1 = array_unique($key1); 

然後你經常代碼:

foreach ($uniqueKey1 as $key => $value) { 
    // echo $value; 
      foreach ($_POST['name'] as $key => $value1) { 
       //echo $value; 
       $subQueryCond .=' AND '.$value1.' LIKE ' .$value ; 
        } 
    } 
相關問題