我有一个名为
的数组$array_fields = array(
'field_0_0_4_target_range',
'field_0_0_5_target_range_criteria',
'field_0_0_6_target_range_count');
我想将其指定为
的输出$key = array('target_range', 'target_range_criteria', 'target_range_count');
我尝试了这个,我得到了理想的结果:
foreach($array_fields as $field) {
if(preg_match('/target_range/', $field)) {
$key[] = substr($field,12); //hard coded
}
}
这行代码"$key[] = substr($field,12)"
的问题在于我可能有一个包含"field_0_0_10_target_range_value"
的字段。
这将包含不良结果"_target_range_value"
。如何确保我获得包含"target_range_*"
的所有字段?
答案 0 :(得分:1)
请尝试以下代码。
$array_fields = array(
'field_0_0_4_target_range',
'field_0_0_5_target_range_criteria',
'field_0_0_6_target_range_count'
);
$new_fields = array();
foreach ($array_fields as $v){
if(preg_match('/target_range.*/',$v,$matchs))
{
$new_fields[] = $matchs[0];
}
}
print_r($new_fields);
答案 1 :(得分:0)
这应该适合你:
(这里我只用array_map()
遍历每个数组元素,然后用target_range*
抓取所有内容并返回它)
<?php
$array_fields = [
'field_0_0_4_target_range',
'field_0_0_5_target_range_criteria',
'field_0_0_6_target_range_count'
];
$array_fields = array_map(function($v){
preg_match_all("/target_range.*/", $v, $matches);
return $matches[0][0];
}, $array_fields);
print_r($array_fields);
?>
输出:
Array ( [0] => target_range [1] => target_range_criteria [2] => target_range_count )