【发布时间】:2017-02-10 18:41:57
【问题描述】:
这是我的测试代码:
$a = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"21");
$b = array("Peter"=>"35", "Ben"=>"21", "Joe"=>"43");
function leo_array_diff($a, $b) {
$map = array();
foreach($a as $val) $map[$val] = 1;
foreach($b as $val) unset($map[$val]);
return array_keys($map);
}
print_r(leo_array_diff($a, $b));
echo "<br>";
print_r(array_diff($a, $b));
这是打印出来的:
Array ( [0] => 37 )
Array ( [Ben] => 37 )
我将指代leo_array_diff() 函数:
第一个问题:
如您所见,peter 是同一个数字,这很好。 $aben 和 $bben 是不同的。 $a 和 $b 乔是不同的。但它只是表明本是不同的。
也许是因为$a joe 21 与$b ben 是21 相同?我该如何改变呢? peter需要和peter对应,ben需要和ben对应,等等……
第二个问题:
Ben 不同,是的,因为 37 和 21 但在 print_r 中,它只显示 Array ( [0] => 37 )。我怎样才能让它显示Array ( [0] => 21 )?调用函数时如何编辑函数而不交换参数?
【问题讨论】:
-
1) 看看
array_diff_assoc()2) 阅读有关array_diff_assoc()的文档 参数的顺序很重要! -
@Rizier123 哇,这适用于第二行。使用函数
leo_array_diff()的第一行呢?