给定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 );
鉴于上面的数组,我需要计算哪个数组是最高的重复整数。想象一下扑克游戏,比较两只手,每只手包含重复的卡,如何评估哪一组重复(无论是双倍,三倍还是四倍)作为最高值。
答案 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]);
}
}