0

我有两个数组数组,其中包含一个国家名称和一个相应的分析指标。我需要减去它们(基于第一个子数组值,即国家)以返回仅在第一个而不是在第二个中找到的国家的第三个数组。示例输入和输出:

第一个数组:

Array
(
    [0] => Array
        (
            [0] => Afghanistan
            [1] => 1
        )

    [1] => Array
        (
            [0] => Albania
            [1] => 1
        )
)

第二个数组:

Array
(
    [0] => Array // not found in 1st array by country name
        (
            [0] => Australia
            [1] => 2
        )

    [1] => Array
        (
            [0] => Albania
            [1] => 2
        )
)

预期输出

Array
(
    [0] => Array
        (
            [0] => Australia
            [1] => 2
        )
)

array_dif();尽管我的数据集中有很多,但没有返回任何差异。我该如何创建这个减去的第三个数组(在 PHP 中)?

4

1 回答 1

0

试试这个

$array1=array('0'=>Array('0' => 'Afghanistan','1' => '1'),
        '1'=>Array('0' => 'Albania','1' => '1')     );
$array2 = Array('0' => Array ('0' => 'Australia','1' => '2'),
    '1' => Array('0' => 'Albania','1' => '2'));
$finalArray = diffArray($array1,$array2); //returns your expected result


function diffArray($array1,$array2){    
    $newarray = array();
    foreach ($array2 as $tmp){
        $duplicate = false;
        foreach($array1 as $tmp1){
            if ($tmp[0] == $tmp1[0]){
                $duplicate=true;
            } 
        }
        if(!$duplicate)
        $newarray[] = $tmp;
    }
    return $newarray;
}
于 2012-07-30T17:59:35.073 回答