虽然应该找不到字符串

String not found although it should

$row['solved']= "12|10|3";
$id=10;
$pos = strpos($row['solved'], $id);
if ($pos !== false){
    echo "String found!";       
    exit;
}
echo "String not found!";

为什么总是这样 return "String not found"?

根据 PHP docs:

If needle is not a string, it is converted to an integer and applied as the ordinal value of a character.

您的 $id 参数是一个整数,因此用作 ordinal value of the character(通常是 ASCII 值。)在这种情况下,ASCII 值 10 代表 \n 换行符,所以你正在搜索 $row['solved'] 这个,在这个特定的 $row['solved'] 值中将找不到。

要解决此问题,请使用:

$pos = strpos($row['solved'], (string)$id);