求算法操作 算法数据库数据 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这个意思?$dict = array( 8, '6-9', '5,8,9');$in = '5-7';$d = fmt($dict);$f = array_filter($d, function($ar) use ($in) { $in = fmt($in); return array_intersect(current($in), $ar);});print_r(array_intersect_key($dict, $f));function fmt($ar) { if(! is_array($ar)) $ar = array($ar); foreach($ar as $r) { $t = preg_split('/[-,]/', $r); $res[] = strpos($r, '-') ? range($t[0], $t[1]) : $t; } return $res;}Array( [1] => 6-9 [2] => 5,8,9) 用了倒排索引 没有楼上的代码好看<?php$dict = array( 8, '6-9', '5,8,9');$in = '5-7';$invertIndex = array();foreach($dict as $index=>$item){ $numbers = preg_split('/[-,]/', $item); if(strpos($item,'-')){ $numbers = range($numbers[0],$numbers[1]); } foreach($numbers as $number){ if(isset($invertIndex[$number])){ $invertIndex[$number] = array($index); }else{ $invertIndex[$number][] = $index; } }}$ins = preg_split('/[-,]/', $in);if(strpos($in,'-')){ $ins = range($ins[0],$ins[1]);}$indexs =array();foreach($ins as $item){ if(isset($invertIndex[$item])){ $indexs = array_merge($indexs,$invertIndex[$item]); }}$indexs = array_unique($indexs);$ret = array();foreach($indexs as $index){ $ret[] = $dict[$index];}var_dump($ret);array(2) { [0]=> string(5) "5,8,9" [1]=> string(3) "6-9"} 求统计一个连续的字符串的方法 ABAB ABCABC AB**AB ABCDE mysql查询字段中路径问题 简单问题 文件上传问题! 有谁能帮我配iis7+php5 急求Appserv下目录访问权限的问题 求从一个html代码中提取出图片的地址的方法 为什么我的随机数,只能刷新一次呢?晕了,急问 有趣的问题,快来帮忙呀。 请问php中md5()加密函数可逆吗,如何把加密过的字符串还原! 本地可以用 “./” 与 "../" ,服务器上不能用 javascript与php的字符串拼接
$in = '5-7';$d = fmt($dict);
$f = array_filter($d, function($ar) use ($in) {
$in = fmt($in);
return array_intersect(current($in), $ar);
});print_r(array_intersect_key($dict, $f));function fmt($ar) {
if(! is_array($ar)) $ar = array($ar);
foreach($ar as $r) {
$t = preg_split('/[-,]/', $r);
$res[] = strpos($r, '-') ? range($t[0], $t[1]) : $t;
}
return $res;
}
Array
(
[1] => 6-9
[2] => 5,8,9
)
用了倒排索引 没有楼上的代码好看<?php$dict = array( 8, '6-9', '5,8,9');
$in = '5-7';$invertIndex = array();foreach($dict as $index=>$item){ $numbers = preg_split('/[-,]/', $item); if(strpos($item,'-')){ $numbers = range($numbers[0],$numbers[1]);
}
foreach($numbers as $number){ if(isset($invertIndex[$number])){
$invertIndex[$number] = array($index);
}else{ $invertIndex[$number][] = $index;
} }
}$ins = preg_split('/[-,]/', $in);if(strpos($in,'-')){ $ins = range($ins[0],$ins[1]);
}$indexs =array();foreach($ins as $item){ if(isset($invertIndex[$item])){
$indexs = array_merge($indexs,$invertIndex[$item]);
}
}$indexs = array_unique($indexs);$ret = array();
foreach($indexs as $index){ $ret[] = $dict[$index];
}var_dump($ret);
array(2) {
[0]=>
string(5) "5,8,9"
[1]=>
string(3) "6-9"
}