PHP使用preg_match或regex作为array_search的值或array_keys的键

PHP使用preg_match或regex作为array_search的值或array_keys的键,php,regex,arrays,preg-replace,Php,Regex,Arrays,Preg Replace,我想知道是否可以在array\u seach()或array\u keys\u exist中使用正则表达式或preg\u match() 即。 array\u keys\u exist($array,“^\d+$”)要匹配所有仅为数字字符的键我不知道它是否完全符合您的需要,但您应该看看该函数,它将根据正则表达式检查字符串数组并返回所有匹配的数组元素。您可以通过对的返回值使用preg\u grep对键执行相同的操作 这与array\u search/array\u key\u exists不同,它

我想知道是否可以在
array\u seach()
array\u keys\u exist
中使用正则表达式或
preg\u match()

即。
array\u keys\u exist($array,“^\d+$”)
要匹配所有仅为数字字符的键

我不知道它是否完全符合您的需要,但您应该看看该函数,它将根据正则表达式检查字符串数组并返回所有匹配的数组元素。您可以通过对的返回值使用
preg\u grep
对键执行相同的操作


这与
array\u search
/
array\u key\u exists
不同,它们在找到匹配项后停止,因为可能只有一个匹配项。另一方面,使用regex时,可能有许多元素满足条件,因此
preg\u grep
将返回所有元素。

对于该特定情况,您可以使用:

= array_filter(array_keys($array), "is_numeric")
要将键与其他正则表达式匹配,需要自定义回调


(也会有,但这是更多的语法开销。)

更好的是
'ctype\u digit'
<代码>是数字的通常太多,除非你真的想匹配十六进制数和指数符号。我认为
preg\u grep
正是问题所要求的(匹配所有键)。如果您真的只想要一个结果,那么可以应用
current()