我有像
这样的数组array(
"v"=>1,
"u"=>8,
"v1"=>45,
"v123"=>12
);
在我的程序中,我需要检查数组是否包含一个元素,其键以v开头后跟数字。我的数组非常大,所以我不喜欢迭代。有没有其他有效的方法来做这个。我期待像isset(arr [regex]);
答案 0 :(得分:2)
可能有效的肮脏黑客将是:
array_keys()
获取所有密钥$data = array(
"v" =>1,
"u" =>8,
"v1" =>45,
"v123" =>12
);
$keys = array_keys($data);
$key_string = implode(',', $keys);
$matches = array();
preg_match('/^v[0-9]{0,}$/', $key_string, $matches);
OR,缩短
$matches = array();
preg_match('/^v[0-9]{0,}$/', implode(',', array_keys($data)), $matches);
我不确定使用array_keys
& implode
,但它应该适合你。
答案 1 :(得分:1)
你可以使用array_filter(http://php.net/manual/en/function.array-filter.php)
首先创建一个回调函数:
function getKeys($n){
return preg_match('/^v[0-9]+$/', $n);
}
然后运行array_filter:
$arr = array(
"v"=>1,
"u"=>8,
"v1"=>45,
"v123"=>12
);
$newArr = array_filter(array_keys($arr), "getKeys");
您可以使用右侧array_keys查看结果:
print_r($newArr);
如果你有结果,这个陈述应该是真的:
echo count($newArr) > 0;