我有一个看起来像这样的字符串,
IT,媒体,广告
我正在做以下代码。
$criteria = explode(",", $string)
;
当print_r在$ criteria上运行时,这显然会创建以下内容。
array([0] => IT,[1] =>媒体,[2] =>'广告')
我使用$ criteria来匹配codeigniter应用程序中数据库中的关键字,我想使用类似的东西,
$this->db->like($criteria);
为了这个工作,虽然我需要$ criteria数组看起来像这样,
array([sector] => IT,[sector] => MEDIA,[sector] =>'ADVERTISING')
我该怎么做?
答案 0 :(得分:3)
PHP不能有多个具有相同密钥的值。
答案 1 :(得分:1)
您无法像这样构建数组。数组的键是相同的,因此值将相互覆盖。
此外,我认为您正在寻找的方法是where_in()
:
$names = array('Frank', 'Todd', 'James');
$this->db->where_in('username', $names);
// Produces: WHERE username IN ('Frank', 'Todd', 'James')
答案 2 :(得分:0)
如下所示创建数组criteria
:
$criteria = array('sector'=>explode(",", $string));
var_dump($criteria);
array(1) {
["sector"]=>
array(3) {
[0]=>
string(2) "IT"
[1]=>
string(6) " MEDIA"
[2]=>
string(12) " ADVERTISING"
}
}
答案 3 :(得分:0)
如果您尝试使用如下数组生成OR WHERE子句:
$criteria = array(
0 => 'IT',
1 => 'MEDIA',
2 => 'ADVERTISING',
)
您可以循环使用like()
和or_like()
方法:
foreach ($criteria as $index => $value) {
if ($index == 0)
$this->db->like('sector', $value);
else
$this->db->or_like('sector', $value);
}
// Produces WHERE sector LIKE '%IT%' OR sector LIKE '%MEDIA%' OR sector LIKE '%ADVERTISING%';