【发布时间】:2017-02-22 11:46:27
【问题描述】:
我有一个如下所示的数组。我需要相互比较并在第一个索引上返回匹配的数组,然后是其他的。
我们如何根据 id 和 scid 与 $scid 比较整个数组?
$scid = 307;
$array = array(
0 =>
array(
'id' => '485',
'scid' => 306
),
1 =>
array(
'id' => '484',
'scid' => null
),
2 =>
array(
'id' => '486',
'scid' => 305
),
3 =>
array(
'id' => '485',
'scid' => 307
),
4 =>
array(
'id' => '485',
'scid' => 309
),
5 =>
array(
'id' => '485',
'scid' => 329
),
);
结果数组应该是这样的
array(3) {
[485]=> array(2) { ["id"]=> string(3) "485" ["scid"]=> int(307) }
[484]=> array(2) { ["id"]=> string(3) "484" ["scid"]=> NULL }
[486]=> array(2) { ["id"]=> string(3) "486" ["scid"]=> int(305) }
}
如果数组有重复的 id 而 scid 不匹配,那么我们可以选择任何 id 值。 注意:匹配的子数组应始终是结果数组的第一个索引。数量始终是唯一的,并且数组中也可能包含 null。
【问题讨论】:
-
你已经完成了所有的分析。现在你只需要编写代码来完成它。
-
重复 id 与哪个 scid 不匹配,然后我们可以选择任何 id 值 - 我们可以捕获第一个出现的值,对吗?喜欢
[485]=> array(2) { ["id"]=> string(3) "485" ["scid"]=> int(306)(第一名485) -
上述场景485匹配307,所以必须返回[485]=> array(2) { ["id"]=> string(3) "485" ["scid"] => 整数(307)。如果它没有那个匹配,那么它可以选择任何一个 id 为 485 的。另外,与 scid 匹配的那个应该总是在第一个索引中。
-
我在stackoverflow.com/questions/12559878/…找到了解决方案,谢谢
标签: php arrays multidimensional-array