0

我有一个看起来像这样的字符串,

IT、媒体、广告

然后我正在执行以下代码。

$criteria = explode(",", $string);

当 print_r 在 $criteria 上运行时,这显然会创建以下内容。

数组([0] => IT,[1] => 媒体,[2] => '广告')

我使用 $criteria 来匹配 codeigniter 应用程序中数据库中的关键字,我想使用类似的东西,

$this->db->like($criteria);

虽然我需要 $criteria 数组看起来像这样,但为了让它工作,

array([sector] => IT, [sector] => MEDIA, [sector] => 'ADVERTISING')

我怎样才能做到这一点?

4

4 回答 4

3

PHP 不能有多个具有相同键的值。

于 2011-06-07T15:14:28.950 回答
1

你不能像这样构建一个数组。数组的键是相同的,因此值将相互覆盖。

另外我认为您正在寻找的方法是where_in()

$names = array('Frank', 'Todd', 'James');

$this->db->where_in('username', $names);

// Produces: WHERE username IN ('Frank', 'Todd', 'James')
于 2011-06-07T15:21:29.807 回答
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"
  }
}
于 2011-06-07T15:21:35.947 回答
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%';
于 2011-06-07T15:32:06.103 回答