Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组搜索返回空键_Php_Arrays - Fatal编程技术网

PHP数组搜索返回空键

PHP数组搜索返回空键,php,arrays,Php,Arrays,我尝试使用array\u 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

我尝试使用
array\u 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;  
但是,我不知道为什么它不返回数组中值的键,但它应该返回。我已经尝试了几个小时的各种解决方案,但仍然没有成功

有谁能给我一个指针,为什么它不返回数组中值的键


感谢这是因为
array\u search
使用
=
运算符比较字符串,而不是使用正则表达式或任何类型的
strop

您搜索的是
902982
,但字符串是
902982/-/4/-/148.80
,因此它们在任何方面都不相等

对于您想要实现的目标,您可以使用:


然后,您可以从生成的数组中获得所需的键。

这是因为
array\u search
使用
==
运算符而不是regex或任何类型的
strop
来比较字符串

您搜索的是
902982
,但字符串是
902982/-/4/-/148.80
,因此它们在任何方面都不相等

对于您想要实现的目标,您可以使用:


然后,您可以从生成的数组中获得所需的键。

这是因为
array\u search
使用
==
运算符而不是regex或任何类型的
strop
来比较字符串

您搜索的是
902982
,但字符串是
902982/-/4/-/148.80
,因此它们在任何方面都不相等

对于您想要实现的目标,您可以使用:


然后,您可以从生成的数组中获得所需的键。

这是因为
array\u search
使用
==
运算符而不是regex或任何类型的
strop
来比较字符串

您搜索的是
902982
,但字符串是
902982/-/4/-/148.80
,因此它们在任何方面都不相等

对于您想要实现的目标,您可以使用:



然后,您可以从生成的数组中获得所需的键。

and在explode()方法中是否有特殊意义?您的预期输出是什么?它用于将字符串元素分隔为“块”。我的预期输出是“1446784/-/3/-/£797.00”。数组搜索将值(而不是数组)作为第一个参数。Do(and)在explode()方法中有特殊含义吗?您的预期输出是什么?它用于将字符串元素分隔为“块”我的预期输出是“1446784/-/3/-/£797.00”。数组搜索将值(而不是数组)作为第一个参数。在explode()中是否(和)有特殊含义方法?您的预期输出是什么?它用于将字符串元素分隔为“块”我的预期输出是“1446784/-/3/-/£797.00”数组搜索将值(而不是数组)作为第一个参数。和在explode()中是否有特殊含义方法?您的预期输出是什么?它用于将字符串元素分隔为“块”我的预期输出是“1446784/-/3/-/£797.00”。数组搜索将值(而不是数组)作为第一个参数。它只是类似于正则表达式搜索的过滤器,并返回使用原始键索引的数组,所以你可以把找到的密钥从原始数组中删除。好吧,我还是有点困惑,我在$result中得到的结果是一个数组我应该如何使用这个数组中的信息?@user2028856是的
$result
包含原始数组中的所有元素及其找到模式的相应键(此处:数字)。所以你可以做一些类似的事情,比如,$..bag\u array=array\u diff($..bag\u array,$result)将其从原始文件中删除array@user2028856它包含原始数组中的键值对,与正在搜索的字符串匹配。RTFMIt只是一个类似于正则表达式搜索的过滤器,返回使用原始密钥索引的数组,因此您可以只获取找到的密钥,然后将其从原始数组中删除。好的,所以我仍然有点困惑,在$result中得到的结果是一个数组我应该如何使用此数组中的信息?@user2028856 Yes
$result
包含原始数组中的所有元素及其找到模式的相应键(此处:数字)。所以你可以做一些类似的事情,比如,$..bag\u array=array\u diff($..bag\u array,$result)将其从原始文件中删除array@user2028856它包含原始数组中的键值对,与正在搜索的字符串匹配。RTFMIt只是一个类似于正则表达式搜索的过滤器,返回使用原始密钥索引的数组,因此您可以只获取找到的密钥,然后将其从原始数组中删除。好的,所以我仍然有点困惑,在$result中得到的结果是一个数组我应该如何使用此数组中的信息?@user2028856 Yes
$result
包含原始数组中的所有元素及其找到模式的相应键(此处:数字)。所以你可以做一些类似的事情,比如,$..bag\u array=array\u diff($..bag\u array,$result)将其从原始文件中删除array@user2028856它包含原始数组中的键值对,与正在搜索的字符串匹配。RTFMIt只是一个类似于正则表达式搜索的过滤器,返回使用原始密钥索引的数组,因此您可以只获取找到的密钥,然后将其从原始数组中删除。好的,所以我仍然有点困惑,在$result中得到的结果是一个数组我应该如何使用此数组中的信息?@user2028856 Yes
$result
包含原始数组中的所有元素及其找到模式的相应键(此处:数字)。所以你可以做一些类似的事情,比如,$..bag\u array=array\u diff($..bag\u array,$result)将其从原始文件中删除array@user2028856它包含原始数组中的键值对,与正在搜索的字符串匹配。RTFM
$result = preg_grep('/' . preg_quote($search) . '/', $current_user_existing_shopping_bag_array);