我在问一个我觉得没有答案的问题,我很好奇为什么。
我有一个测试产品数组,列出了我所有的人get_products_all()。
function get_products_all() {
$products = array();
$products[101] = array(
"name" => "Jared",
"age" => 23,
"sex" => "Male");
$products[102] = array(
"name" => "Gen",
"age" => 21,
"sex" => "Female");
$products[103] = array(
"name" => "Noah",
"age" => 24,
"sex" => "Male");
return $products;
}
然后我有一个搜索功能,它从get_products_all()中提取所有产品并循环遍历产品以在“名称”字段中找到与搜索匹配的字符串
function get_products_search($s) {
$results = array();
$all = get_products_all();
foreach($all as $product) {
if (stripos($product["name"], $s)) {
$results[] = $product;
}
}
return $results;
}
如您所见,$s是我希望搜索的参数。在这种情况下,假设我正在搜索“Jared”。每当我运行这段代码时,它都会告诉我数组中没有名为“Jared”的人!但是,当我只插入“ared”时......它发现“Jared”很好......如果我在数组的名称字段中的“Jared”前面放置一个空格,那么它也可以正常工作。
我的问题是:为什么 stripos 不能识别名称字段中的第一个字符?即使我使用0的偏移量,它似乎也不包括第一个字符。有没有办法解决?
我只想能够搜索名称,而不必在名称值前面放置一个空格。