请教,如何判断数组中是否包特定数字

请教,想实现从数据库中读取数据字段,判断特定数字是否包含在数组字段中,现在代码如下:
数据库中bm字段值为“36,34,11,10”
$bm=$rs[‘bm’];
$array=[$bm];
$s=10;
if(in_array($s, $array, true)){
echo ‘数组中包含’.$s.’
‘;
}else{
echo ‘数组中不包含’.$s.’
‘;
}
程序运行“结果是数组不包含10”,请教下问题出在哪,感谢!
PS:直接$array=[36,34,11,10]这样把数字写到数据中,程序可正确判断,带入变量$array=[$bm]就不行。

最佳答案

是个新手,很新的那种,php 新鲜血液👍

$string = '36,34,11,10';
$array = explode(',', $string); // 使用逗号分隔字符串为数组
$number = 10;
if (in_array($number, $array, true)) {
    // ...
} else {
    // ...
}
1年前 评论
kolin 1年前
讨论数量: 5

是个新手,很新的那种,php 新鲜血液👍

$string = '36,34,11,10';
$array = explode(',', $string); // 使用逗号分隔字符串为数组
$number = 10;
if (in_array($number, $array, true)) {
    // ...
} else {
    // ...
}
1年前 评论
kolin 1年前

你这数据库不是逗号分隔存储的字符串吗?那用字符串是否存在判断就行了

$string = '36,34,11,10';
$number = 10;
if (strpos($string, $number) !== false) {
    echo "存在";
} else {
    echo "不存在";
}
9个月前 评论
lddtime 9个月前

可以考虑直接sql 中使用FIND_IN_SET 函数
示例:
name字段: 101,102,103
select * from table WHERE FIND_IN_SET(101,name);
FIND_IN_SET(str,strlist) : str 要查询的字符串,strlist 需查询的字段,参数以”,”分隔,形式如 (1,2,6,8,10,22);该函数的作用是查询字段(strlist)中是否包含(str)的结果,返回结果为null或记录。

9个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!