php文件中
$urlf="a.html,b.html,c.html";
$urls="g.html,b.html,d.html";
$urlc="a.html,f.html,d.html";
$arr_f=explode(',',$urlf);
$arr_s=explode(',',$urls);
$arr_c=explode(',',$urlc);
$result_c = array_intersect_assoc($arr_f, $arr_s,$arr_c);上面的函数可取到上面三个数组中的共同的值
可如果$result_c 为空值,此时我就需要用 第一个数组与第二个数组去取相同值了,
如果又是空值,那就要用第一个数组与第三个数组去取相同值了,如果又是空值,就要用第二个数组与第三个数组去取相同值了,(用if else的思想不太好,因为当有第四个数组,第五个数组时,代码量会很大)这怎么实现呀,大家帮我写写
thanks
$urlf="a.html,b.html,c.html";
$urls="g.html,b.html,d.html";
$urlc="a.html,f.html,d.html";
$arr_f=explode(',',$urlf);
$arr_s=explode(',',$urls);
$arr_c=explode(',',$urlc);
$result_c = array_intersect_assoc($arr_f, $arr_s,$arr_c);上面的函数可取到上面三个数组中的共同的值
可如果$result_c 为空值,此时我就需要用 第一个数组与第二个数组去取相同值了,
如果又是空值,那就要用第一个数组与第三个数组去取相同值了,如果又是空值,就要用第二个数组与第三个数组去取相同值了,(用if else的思想不太好,因为当有第四个数组,第五个数组时,代码量会很大)这怎么实现呀,大家帮我写写
thanks
解决方案 »
- 有偿请会php的朋友做一段代码(应该很简单)
- 一个人做这样一个站的程序要多久!有点迷茫!
- 恳求配置IIS+PHP+MYSQL
- 使用apache和postgres数据库建站的高手进来看看!技术讨论
- 请教个session问题
- {加急}PHP连接win2003下mysql的奇怪问题
- 我在申请的空间上传了phpmyadmin,配置完后,运行显示:CGI/PHP程序错误: 该脚本不允许执行!请问这怎么办? (祥情请进)
- 如何在mysql中使用.sql脚本文件建立表?
- phpcms 问题
- 求高手帮忙,想要读取test.txt文件中的内容,然后放到数组,最后变成json数组,请问如何实现?
- 如何根据列名取值?
- 求助:php 不能加载动态类库错误
理论上支持任意多array比较,未经过测试,2个小时候后下班回家可以测试一下~<?php
//计算组合;$arr中取$n个元素的所有情况
function array_combination(array $arr,$n){
$result = array($arr);
$m = count($arr);
while($m>$n){
foreach($result as $tmp){
$a = $tmp;
for($i=$m-1;$i>=0;$i--){
$result[] = unset($a[$i]);
$a = $tmp;
}
unset($tmp);
}
$m--;
}
return $result;
}function my_array_intersect_assoc(){
//参数列表
$ar = func_get_args();
//删除空数组
foreach($ar as $k=>$v) {
if(! $v) unset($ar[$k]);
}
$n = count($ar);
//从最大匹配开始,遇到交集不为空则返回
while($n>1){
$arr = array_combination($ar,$n);
foreach($arr as $a){
$result = call_user_func_array('array_intersect_assoc', $a);
if(!empty($result))
return $result;
}
$n--;
}
return $result;
}$urlf="a.html,b.html,c.html";
$urls="g.html,b.html,d.html";
$urlc="a.html,f.html,d.html";
$arr_f=explode(',',$urlf);
$arr_s=explode(',',$urls);
$arr_c=explode(',',$urlc);print_r(my_array_intersect_assoc($arr_f, array(), $arr_s, $arr_c, array()));
?>
$urlf="a.html,b.html,c.html";
$urls="g.html,b.html,d.html";
$urlc="a.html,f.html,d.html";
$arr_f=explode(',',$urlf);
$arr_s=explode(',',$urls);
$arr_c=explode(',',$urlc);
$result_c = foo($arr_f, $arr_s,$arr_c);
print_r($result_c);function foo() {
foreach(func_get_args() as $c) {
foreach((array)$c as $v) {
$r[$v]++;
}
}
if(max($r)<2) return array();
return array_keys($r, max($r));
}
foreach(func_get_args() as $c) { //读取并遍历传入的参数(若干的数组)
foreach((array)$c as $v) { //遍历数组,取得每个成员的值
$r[$v]++; //以数组成员的值为键计数,及统计每个值出现的次数
}
}
if(max($r)<2) return array(); //如果没有值重复出现则返回空数组,不返回false是因为为便于后继处理
return array_keys($r, max($r));//否则返回出现次数最多的元素集合
}