首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得数组的差异

如何获得数组的差异
EN

Stack Overflow用户
提问于 2014-11-04 12:03:14
回答 3查看 48关注 0票数 1

我有二维阵列。

包含一些可用名称的Array1:

代码语言:javascript
复制
Array1
(
[0] => Array
     (
         [quantity] => 13
         [idname] => 3
         [x_name] => Name-3
     )

[1] => Array
    (
        [quantity] => 5
        [idname] => 4
        [x_name] => Name-4
    )

)

和包含所有可用名称的Array2:

代码语言:javascript
复制
Array2
(
    [0] => Array
        (
            [id_x] => 3
            [x_name] => Name-3
            [id_l] => 4
        )

    [1] => Array
        (
            [id_x] => 4
            [x_name] => Name-4
            [id_l] => 8
        )

    [2] => Array
        (
            [id_x] => 5
            [x_name] => Name-5
            [id_l] => 7
        )

    [3] => Array
        (
            [id_x] => 6
            [x_name] => Name-6
            [id_l] => 5
        )

)

Array1 = Array2和Array1 = Array2 (ofc.)

我希望输出的是来自Array2的所有Array1不包含的元素.因此:

代码语言:javascript
复制
Arraydesire
(

    [0] => Array
        (
            [id_x] => 5
            [x_name] => Name-5
            [id_l] => 7
        )

    [1] => Array
        (
            [id_x] => 6
            [x_name] => Name-6
            [id_l] => 5
        )

)

我试着使用array_intersect,但没有工作。谢谢你的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-04 12:14:16

您可以使用嵌套的foreach循环。如果array2当前元素的值在array1中找到,请删除该元素:

代码语言:javascript
复制
foreach($array2 as $key => $value){
    foreach($array1 as $val){
        if($value['x_name']==$val['x_name']){
            unset($array2[$key]);
            $break;
        }
    }
}
var_dump($array2);

实例:http://codepad.viper-7.com/eOOUi6

票数 2
EN

Stack Overflow用户

发布于 2014-11-04 12:13:26

看看array_diff (http://php.net/manual/en/function.array-diff.php),

代码语言:javascript
复制
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);

Array
(
    [1] => blue
)

否则,您可能需要编写一个遍历array2的循环,查看它是否在array1中,如果它没有将其添加到一个新数组中,则输出该数组。

票数 0
EN

Stack Overflow用户

发布于 2014-11-04 12:18:09

代码语言:javascript
复制
<?php
$arr1 = Array();
$arr1[] = Array('quantity' => 13, 'idname' => 3, 'x_name' => 'Name-3');
$arr1[] = Array('quantity' => 5, 'idname' => 4, 'x_name' => 'Name-4');


$arr2 = Array();
$newTemp = Array();
$arr2[] = Array('id_x' => 3, 'x_name' => 'Name-3', 'id_l' => 4);
$arr2[] = Array('id_x' => 4, 'x_name' => 'Name-4', 'id_l' => 8);
$arr2[] = Array('id_x' => 5, 'x_name' => 'Name-5', 'id_l' => 7);
$arr2[] = Array('id_x' => 6, 'x_name' => 'Name-6', 'id_l' => 5);

$newTemp = $arr2;
foreach ($arr1 as $subArray1) {
    foreach ($arr2 as $key => $subArray2) {
        if ($subArray1['x_name']==$subArray2['x_name']) {
            unset($newTemp[$key]);
            break;
        }
    }
}
print_r($arr1);
print_r($arr2);
print_r($newTemp);
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26734678

复制
相关文章

相似问题

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