爆炸数组并添加数组键

时间:2011-06-07 15:12:31

标签: php arrays associative-array array-key

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

  

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')

我该怎么做?

4 个答案:

答案 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%';