Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何简化此数组以使MySQL满足where条件_Php_Mysql - Fatal编程技术网

Php 如何简化此数组以使MySQL满足where条件

Php 如何简化此数组以使MySQL满足where条件,php,mysql,Php,Mysql,如何简化mysql where子句中使用的数组??? 比如说= 从以下表格中选择*,其中ram='2GB'或ram='4GB',屏幕大小='5-6英寸',或屏幕大小='6-7英寸',网络连接='3G'或网络连接='4G' 我试过了 Array ( [0] => Array ( [ram] => 2 GB ) [1] => Array ( [ram] => 4 GB ) [2] => Array ( [ram] => 6 GB )

如何简化mysql where子句中使用的数组??? 比如说=

从以下表格中选择*,其中ram='2GB'或ram='4GB',屏幕大小='5-6英寸',或屏幕大小='6-7英寸',网络连接='3G'或网络连接='4G'

我试过了

Array (
    [0] => Array ( [ram] => 2 GB )
    [1] => Array ( [ram] => 4 GB )
    [2] => Array ( [ram] => 6 GB )
    [3] => Array ( [screen_size] => 5 - 6 Inch )
    [4] => Array ( [screen_size] => 6 - 7 Inch )
    [5] => Array ( [network_connectivity] => 3G )
    [6] => Array ( [network_connectivity] => 4G )
)
结果是:
ram=2 GB或ram=4 GB或ram=6 GB或屏幕尺寸=5-6英寸或屏幕尺寸=6-7英寸或网络连通性=3G或网络连通性=4G

$condition = "";
if(!empty($this->input->post('datafilter'))){
foreach ($this->input->post('datafilter') as $mainfilter) {
  foreach ($mainfilter as $key => $value) {
   //echo $condition.'<br>';
   if(!empty($condition)){
    if (strpos($condition, $key) === true) {
       $con = ' AND ';
    } else {
      $con = ' OR ';
    }
    }
    else{
      $con = ' OR ';
    }
    $condition .= $key.' = '.$value . $con;
  }
}
}

嘿,伙计,也添加你的mysql查询!
<?php
    $optList=[
        [ 'ram' => '2 GB' ],
        [ 'ram' => '4 GB' ],
        [ 'ram' => '6 GB' ],
        [ 'screen_size' => '5 - 6 Inch' ],
        [ 'screen_size' => '6 - 7 Inch' ],
        [ 'network_connectivity' => '3G' ],
        [ 'network_connectivity' => '4G' ]
    ];
    $optByItems=[];
    foreach ($optList as $opts) {
        foreach ($opts as $item => $value) {
            $optByItems[$item][$value]=1;
        }
    }
    $query='';
    foreach ($optByItems as $item => $values) {
        $query .= (empty($query) ? '' : ' AND ') . "($item='" . join("' OR $item='", array_keys($values)) . "')";
    }
    echo $query;
?>