взорвать массив и добавить ключи массива - PullRequest
0 голосов
/ 07 июня 2011

У меня есть строка, которая выглядит следующим образом:

IT, MEDIA, ADVERTISING

Затем я делаю следующий код.

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

Это очевидно создает следующее, когда print_r запускается по критериям $.

массив ([0] => IT, [1] => MEDIA, [2] => 'ADVERTISING')

Я использую $ критерий для сопоставления ключевых слов в базе данных в приложении codeigniter, я хочу использовать что-то вроде

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

для того, чтобы это работало, хотя мне нужно, чтобы массив $ критериев выглядел так, массив

([сектор] => IT, [сектор] => MEDIA, [сектор] =>«РЕКЛАМА»)

Как я могу это сделать?

Ответы [ 4 ]

3 голосов
/ 07 июня 2011

PHP не может иметь несколько значений с одним и тем же ключом.

1 голос
/ 07 июня 2011

Вы не можете создать такой массив. Ключи массива идентичны, поэтому значения будут перезаписывать друг друга.

Также я думаю, что метод, который вы ищете, это where_in():

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

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

// Produces: WHERE username IN ('Frank', 'Todd', 'James')
0 голосов
/ 07 июня 2011

Если вы пытаетесь создать предложения 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%';
0 голосов
/ 07 июня 2011

Как насчет создания вашего массива criteria, например:

$criteria = array('sector'=>explode(",", $string));

OUTPUT

var_dump($criteria);

array(1) {
  ["sector"]=>
  array(3) {
    [0]=>
    string(2) "IT"
    [1]=>
    string(6) " MEDIA"
    [2]=>
    string(12) " ADVERTISING"
  }
}
...