2016-03-04 123 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 ; 
        } 
    } 
相关问题