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 ;
} |
- 感谢AVD,虽然我现在意识到我的问题格式不正确,因为我还需要同时操作这些键,但我想我也可以对数组键使用相同的过程。
让它这样运作:
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+语法):
对两个数组都这样做,并比较哪个结果更高。试图同时将两者进行比较太复杂了。
你不需要三元运算符。另外,注意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]);
}
} |
号
- 哎呀,-2.谢谢你的耳光!你能解释一下为什么我们不应该做空检查,或者在运行代码之前确认它不会失败吗?谢谢。
- 因为问题是这两个数组的长度相同。但是,您的代码不能与这里的非数字键一起工作,所以检查了一些不需要检查的东西,但没有工作。