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