如何在PHP中使用不同格式对特定数字进行预存?

如何在PHP中使用不同格式对特定数字进行预存?,php,arrays,Php,Arrays,我有一个参考号数组,其中包含一个点、一个破折号和一个参考号的搜索字符串,其中有点、破折号 现在我想检索匹配的密钥,以便检索处于原始状态的数字 正在查找此参考号:21230412003001 阵列内部: $ref_facetes = Array ( [212.30.41.20.03.001] => 8 [3523.30.00] => 8 [215.92.46.22.01.003] => 7 ) 正则表达式: '/\/|\./' 尝试grep它: $ke

我有一个参考号数组,其中包含一个点、一个破折号和一个参考号的搜索字符串,其中有点、破折号

现在我想检索匹配的密钥,以便检索处于原始状态的数字

正在查找此参考号: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 

如何做到这一点?

一种方法是创建一个新数组,将原始键中的所有非数字字符作为键,并将原始键作为值,您可以使用,和。然后,您可以检查搜索字符串是否作为键存在,如果是,则输出值:

$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';

一种方法是创建一个新数组,将原始键中的所有非数字字符作为键,原始键作为值,您可以使用,和。然后,您可以检查搜索字符串是否作为键存在,如果是,则输出值:

$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';

@merlin不用担心。很高兴我能帮上忙。@merlin不用担心。很高兴我能帮忙。