首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在多维数组上使用array_intersect

在多维数组上使用array_intersect
EN

Stack Overflow用户
提问于 2011-04-14 01:37:30
回答 3查看 27.7K关注 0票数 30

我有两个数组,它们看起来都像这样:

Array
(
    [0] => Array
        (
            [name] => STRING
            [value] => STRING
        )

    [1] => Array
        (
            [name] => STRING
            [value] => STRING
        )

    [2] => Array
        (
            [name] => STRING
            [value] => STRING
        )
)

我希望能够通过比较两个主阵列中的子阵列的ID来复制array_intersect。到目前为止,我的尝试还没有成功。:(

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-14 01:59:17

使用array_uintersect()使用自定义比较函数,如下所示:

$arr1 = array(
           array('name' => 'asdfjkl;', 'value' => 'foo'),
           array('name' => 'qwerty', 'value' => 'bar'),
           array('name' => 'uiop', 'value' => 'baz'),
        );

$arr2 = array(
           array('name' => 'zxcv', 'value' => 'stuff'),
           array('name' => 'asdfjkl;', 'value' => 'foo'),
           array('name' => '12345', 'value' => 'junk'),
           array('name' => 'uiop', 'value' => 'baz'),
        );

$intersect = array_uintersect($arr1, $arr2, 'compareDeepValue');
print_r($intersect);

function compareDeepValue($val1, $val2)
{
   return strcmp($val1['value'], $val2['value']);
}

这会产生,正如你所希望的:

Array
(
    [0] => Array
        (
            [name] => asdfjkl;
            [value] => foo
        )

    [2] => Array
        (
            [name] => uiop
            [value] => baz
        )

)
票数 51
EN

Stack Overflow用户

发布于 2015-12-21 21:50:09

function compareDeepValue($val1, $val2)
{
   return strcmp($val1['value'], $val2['value']);
}

请确保val1数组中存在val2密钥,因为该函数是先对数组进行排序。非常奇怪。

票数 3
EN

Stack Overflow用户

发布于 2019-05-08 14:21:48

您可以使用嵌入式函数与array_uintersect的php函数。例如:

$intersectNames = array_uintersect($arr1, $arr2, function ($val1, $val2){
    return strcmp($val1['name'], $val2['name']);
    });

$intersectValues = array_uintersect($arr1, $arr2, function ($val1, $val2){
    return strcmp($val1['value'], $val2['value']);
    });

print_r('namesIntersected' => $intersectNames, 'valuesIntersected' => $intersectValues)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5653241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档