我正在尝试使用array_search
来查找数组中值的键,我有以下简单代码:
$current_user_existing_shopping_bag_string = '1446784/-/3/-/£797.00(_)902982/-/4/-/£148.80(_) ';
$current_user_existing_shopping_bag_array = explode('(_)', $current_user_existing_shopping_bag_string);
$key = array_search($current_user_existing_shopping_bag_array, '902982');
echo $key;
但是我不知道为什么这不会返回数组中值的键,应该如此。我现在几个小时都在尝试各种解决方案但仍然没有运气。
任何人都能给我一个指针,为什么这不会返回数组中值的键?
由于
答案 0 :(得分:3)
这是因为array_search
使用===
运算符比较字符串,而不是任何类型的正则表达式或strpos
。
您搜索902982
但字符串为902982/-/4/-/£148.80
,因此它们在任何方面都不相同。
对于您想要实现的目标,您可以使用preg_grep:
$result = preg_grep('/' . preg_quote($search) . '/', $current_user_existing_shopping_bag_array);
然后,您可以从结果数组中获取所需的键。