我有一个参考号数组,其中包含一个点,一个破折号和一个带点,破折号的参考号搜索字符串。
现在,我想检索匹配键,以便检索其原始状态的数字。
正在寻找参考编号: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
这怎么办?
答案 0 :(得分:2)
执行此操作的一种方法是创建一个新数组,使用从原始键中剥离的所有非数字字符作为键,并从原始键中剥离的所有值作为值,您可以使用array_combine
,{{3 }}和array_map
。然后,您可以检查一下搜索字符串是否作为关键字存在,如果存在,则输出值:
$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';