我有一个参考编号数组,其中包含一个点、一个破折号和一个参考编号的搜索字符串,其中点、破折号被剥离。
现在我想检索匹配的密钥以检索原始状态的数字。
求此参考号:21230412003001
内部数组:
$ref_facetes = Array
(
[212.30.41.20.03.001] => 8
[3523.30.00] => 8
[215.92.46.22.01.003] => 7
)
正则表达式:
'/\/|\./'
试图grep它:
$key = preg_grep('/\/|\./', $search_para['refid'], $ref_facetes);
为了找回原来的写作风格:
echo $ref_facetes[$key];
// should return: 212.30.41.20.03.001
如何才能做到这一点?
一种方法是创建一个新数组,其中从原始键中剥离的所有非数字字符作为键,原始键作为值,您可以使用array_combine
,array_map
和preg_replace
。然后,您可以检查搜索字符串是否作为键存在,如果存在,则输出值:
$ref_keys = array_combine(array_map(function ($v) {
return preg_replace('/[^0-9]/', '', $v);
}, array_keys($ref_facetes)), array_keys($ref_facetes));
echo isset($ref_keys[$search_para['refid']]) ? $ref_keys[$search_para['refid']] : 'not found';
输出:
212.30.41.20.03.001
如果您使用的是 PHP7 及更高版本,则可以将最后一行替换为
echo $ref_keys[$search_para['refid']] ?? 'not found';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句