Я задаю вопрос, который, как я чувствую, не имеет ответа, и мне любопытно, почему.stripos() не распознает первый символ
У меня есть массив тестовых продуктов, в котором перечислены все мои люди 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 - это параметр, который я хочу найти. В этом случае, скажем, Im ищет «Джареда». Всякий раз, когда я запускаю этот код, он говорит мне, что в моем массиве никто не назвал «Джаред»! Однако, когда я просто вставляю «ared» ... он находит «Jared» просто отлично ... Если я помещаю пространство перед «Jared» в поле имени в массиве, то он также отлично работает.
Мой вопрос в том, почему полоса не распознает первый символ в поле имени? Даже когда я использую смещение , он, кажется, не включает в себя первый символ. Есть ли способ обойти это?
Я просто хочу, чтобы иметь возможность искать имена, не помещая пространство перед именем.
Если нет никакого способа, чтобы включить первый символ, (т.е. "0" в строке) в моей формуле выше, используя ** stripos **, является существует другой способ поиска целой строки без необходимости помещать пробел перед именем? Например, $ products [101] = array ( "name" => "(пробел) Jared", "age" => 23, "sex" => "Male"); – jlango7