将多维数组相互比较,将一些数组字段与外部变量进行比较

时间:2017-02-22 11:46:27

标签: php arrays multidimensional-array

我有一个如下所示的数组。我需要相互比较并在第一个索引上返回匹配的数组,然后返回其他索引。

我们如何基于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。

2 个答案:

答案 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);