这个怎么样?
get_similar_items
代码:
<?php
$array01 = array(
0 => array("hallo", "welt", "du", "ich"),
1 => array("mag", "dich"),
2 => array("nicht", "haha", "huhu")
);
$array02 = array(
0 => array("haha", "welt", "dich"),
1 => array("hallo", "mag", "nicht"),
2 => array("du", "ich", "huhu")
);
function get_similar_items() {
$arrs = func_get_args();
foreach ($arrs as &$arr) {
while (list($k, $v) = each($arr)) {
if (is_array($v)) {
array_splice($arr,$k,1,$v);
next($arr);
}
}
}
return call_user_func_array('array_intersect',$arrs);
}
print_r(get_similar_items($array01,$array02));
结果:
Array
(
[0] => hallo
[1] => welt
[2] => du
[3] => ich
[4] => mag
[5] => dich
[6] => nicht
[7] => haha
[8] => huhu
)
get_similar_items_count
代码:
<?php
$array01 = array(
0 => array("hallo", "welt", "du", "ich"),
1 => array("mag", "dich"),
2 => array("nicht", "haha", "huhu")
);
$array02 = array(
0 => array("haha", "welt", "dich"),
1 => array("hallo", "mag", "nicht"),
2 => array("du", "ich", "huhu")
);
$array03 = array(
0 => array("haha", "haha", "dich"),
1 => array("dich", "mag", "mag"),
2 => array("du", "ich", "haha")
);
function get_similar_items_count() {
$arrs = func_get_args();
foreach ($arrs as &$arr) {
while (list($k, $v) = each($arr)) {
if (is_array($v)) {
array_splice($arr,$k,1,$v);
next($arr);
}
}
}
unset($arr);
$counts = array();
foreach ($arrs as $arr) {
foreach (array_count_values($arr) as $k => $v) {
if ($v) {
if (!isset($counts[$k])) {
$counts[$k] = $v;
} else {
$counts[$k] += $v;
}
}
}
}
return $counts;
}
print_r(get_similar_items_count($array01,$array02,$array03));
结果:可能通过foreach()
机器人阵列
Array
(
[hallo] => 2
[welt] => 2
[du] => 3
[ich] => 3
[mag] => 4
[dich] => 4
[nicht] => 2
[haha] => 5
[huhu] => 2
)
那么user1的任何单词都可以在user2的任何其他子数组中? – Borik 2013-05-14 17:22:23
你能比较详细地描述你想要比较的内容以及你的意思吗?例如,你是否想比较'$ array01'和'$ array02'之间嵌套数组的所有值,并查看有多少个相互的值?你只想比较0到0,1到1等吗? – 2013-05-14 17:22:43
你可以请你给你的例子预期的结果? – 2013-05-14 17:25:11