Я новичок в php, поэтому мне нужна помощь с этим:

У меня есть ячейка значений, например 1,2,3,4,5

Например, мне нужно проверить, находится ли значение 3 в этой ячейке.

Итак, вот мой код:

$article = $db->query("SELECT users FROM products WHERE id = $product_id");
while ($data = $article->fetch_object()) {
$users = $data->users;
}

$number_that_i_need_to_check_if_is_in_string = 3;
$users = explode(',',$users);
foreach ($users as $specific) {
    //i dont know what to do here...
}

И я не знаю, как проверить это число 3 в этой строке ...

Спасибо заранее.

0
gandrap 5 Мар 2014 в 00:57

4 ответа

Лучший ответ

Вам не нужен цикл foreach. Когда у вас есть все значения в массиве, вы можете просто использовать функцию in_array (): http://us3.php.net/in_array

Также есть проблема с вашим циклом while. Если есть несколько строк, возвращенных так, как вы написали, каждое значение будет просто перезаписано следующим, поэтому $ users будут хранить только одно значение, и вы не сможете его взорвать.

Что вы можете сделать, это просто прочитать все значения непосредственно в массиве, изменив эту строку на следующее:

$users[] = $data->users;

Тогда

if(in_array(3,$users)){
    .....
}
0
khaos337 4 Мар 2014 в 21:06

Используя свой код, вы можете сделать это

foreach($users as $specific) {
  if($number_that_i_need_to_check_if_is_in_string == $specific) {
    //do something here.
  }
}

Есть гораздо лучшие способы сделать это, в том числе написать запрос, чтобы выполнить поиск за вас, или использовать array_search.

1
Robbert 4 Мар 2014 в 21:02

Вы можете использовать функцию mysql FIND_IN_SET следующим образом

$article = $db->query("SELECT users FROM products WHERE id = $product_id AND FIND_IN_SET(3, users)");

Этот запрос даст вам все строки, в которых поля id=$product_id и users содержат 3.

0
CodeBird 4 Мар 2014 в 21:04

Вы можете включить его в запрос

SELECT users FROM products WHERE id=$product_id AND FIELD_IM_CHECKING=$number_that_i_need_to_check_if_is_in_string

Или...

Используйте искомую строку в качестве индекса для массива.

while($data=$article->fetch_object()){
 $users[$data->FIELD_IM_CHECKING][]=$data->users;

В итоге вы получаете массив с искомым значением в качестве индекса. Таким образом, $ users [3] будут всеми пользователями с цифрой «3» в искомом поле ...

Пожалуйста, в следующий раз задай вопрос получше. Поскольку у вас нет конкретных данных, и вы спрашиваете, мой ответ тоже кажется довольно расплывчатым ...

0
patrick 4 Мар 2014 в 21:05