我有一个如下所示的数组。我需要相互比较并在第一个索引上返回匹配的数组,然后返回其他索引。
我们如何基于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。
答案 0 :(得分:0)
试试这个,
$temp = [];
foreach($array as $k => $v){
$temp[$v['id']][] = $v;
}
试一试,这样可行。
答案 1 :(得分:0)
你想要这样的东西吗?
$result = [];
foreach ($array as $item) {
$result[$item['id']] = ['id' => $item['id'], 'scid' => $item['scid']];
}
var_dump($result);