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

时间:2011-12-06 05:47:57

标签: php arrays

给定2个关联数组:

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

我想做点什么:

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

这不起作用,因为我使用关联数组。实现这一目标的最佳方法是什么? (这个循环将会运行强度,所以我希望尽可能保持亮度)

编辑以详细说明我要做的事情:

以下是我想要实现的更好的例子:

$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 );

鉴于上面的数组,我需要计算哪个数组是最高的重复整数。想象一下扑克游戏,比较两只手,每只手包含重复的卡,如何评估哪一组重复(无论是双倍,三倍还是四倍)作为最高值。

4 个答案:

答案 0 :(得分:3)

使用array array_values ( array $input )功能并进行比较。

 $value1=array_values($fruits);
 $value2=array_values($fruits2);

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

答案 1 :(得分:2)

以这种方式工作:

$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'];

  ...
}

答案 2 :(得分:1)

你可能正在追逐错误的解决方案。要找到数组中最高的副本,我会使用它(PHP 5.3+语法):

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

对两个数组执行此操作并比较哪个结果更高。试图同时比较两者是太复杂了。

答案 3 :(得分:-2)

您不需要三元运算符 另外,请注意count(),因为如果数组为null,它将失败 它们也需要相同的长度,否则你会收到错误。

if( is_array($value1)  && is_array($value2) && count($value1)==count($value2) ) {
    for ( $i = 0; $i < count($value1); $i++)
    {
        $test[] = ($value1[$i] == $value2[$i]);
    }
}