关于php:计算两个关联数组的最高重复整数

Calculate the highest duplicate integers of two associative arrays

给定2个关联数组:

1
2
$fruits  = array ("d" =>"lemon","a" =>"orange","b" =>"banana","c" =>"apple" );
$fruits2 = array ("e" =>"lemon","f" =>"apple", "g" =>"melon", "h" =>"apple" );

我想做如下的事情:

1
2
3
4
for ( $n = count($fruits), $i = 0; $i < $n; $i++)
{
  $test = (bool) $fruits[$i] == $fruits2[$i];
}

这不能像我使用关联数组那样工作。实现这一目标的最佳途径是什么?(这个循环将是跑步强度,所以我希望尽可能的轻)

编辑以提供有关我正在尝试执行的操作的详细信息:

下面是一个更好的例子,说明我正在努力实现的目标:

1
2
3
4
$array   = array ( 1,2,3,4,3,2 );
$array2  = array ( 9,6,3,4,3,2 );
$counts  = array_count_values( $words );
$counts2 = array_count_values( $words2 );

给定上面的数组,我需要计算哪个数组是最高的重复整数。想象一个扑克游戏,比较每只手上都有两张牌,如何评估哪一套牌是最高值(双牌、三牌或四牌)。


使用array array_values(array$input)函数并比较它们。

1
2
3
4
5
6
7
 $value1=array_values($fruits);
 $value2=array_values($fruits2);

 for ( $i = 0; $i < count($value1); $i++)
 {
   $test[] = $value1[$i] == $value2[$i] ? TRUE : FLASE;
 }


让它这样运作:

1
2
3
4
5
6
7
8
9
10
$n = count($fruits);
for ( $i = 0; $i < $n; $i++)
{
  $cur_vals_1 = each ($fruits);
  $cur_vals_2 = each ($fruits2);

  $sum1 += $cur_vals_1['key'] * $cur_vals_1['value'];

  ...
}


你可能在寻求错误的解决方案。要在数组中找到最高的副本,我将使用这个(php 5.3+语法):

1
max(array_keys(array_filter(array_count_values($array), function ($i) { return $i >= 2; })))

对两个数组都这样做,并比较哪个结果更高。试图同时将两者进行比较太复杂了。


你不需要三元运算符。另外,注意count(),因为如果数组为空,它将失败。它们也需要等长,否则会出错。

1
2
3
4
5
6
if( is_array($value1)  && is_array($value2) && count($value1)==count($value2) ) {
    for ( $i = 0; $i < count($value1); $i++)
    {
        $test[] = ($value1[$i] == $value2[$i]);
    }
}