除非字符串很大,否则创建一个数组并搜索它:
$string = "21,22,23,26,";
$arr = explode(",", $string);
// array_search() returns its position in the array
echo array_search("2", $arr);
// null output, 2 wasn't found
实际上,in_array()
可能更快:
// in_array() returns a boolean indicating whether it is found or not
var_dump(in_array("2", $arr));
// bool(false), 2 wasn't found
var_dump(in_array("22", $arr));
// bool(true), 22 was found
只要您的字符串是逗号分隔的值列表,这将起作用。如果字符串真的很长,创建一个数组可能会浪费内存。请改用字符串操作解决方案。
附录
您没有指定,但如果这些字符串有可能来自数据库表,我只想补充一点,适当的做法是将其正确规范化为另一个表,每个 id 一行,而不是将它们存储为分隔细绳。