如何在php中检测两个json对象之间的重复元素

时间:2014-08-14 18:46:19

标签: php json

我试图像这样检测2个json对象之间的不同元素;

//Json1    
    [
        {"file":"arrowssss.png"},
        {"file":"arrows.png"},
        {"file":"logo.png"}
    ]
//Json1    
    [
        {"file":"arrows.png"},
        {"file":"logo.png"}
    ]

我需要返回Arrowsss.png。

有任何建议吗?

2 个答案:

答案 0 :(得分:0)

尝试

function flatten(array $array) {
    $return = array();
    array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; });
    return $return;
}

$json1 = '[{"file":"arrowssss.png"},
        {"file":"arrows.png"},
        {"file":"logo.png"}]';

$json2 = '[{"file":"arrows.png"},
        {"file":"logo.png"}]';

$array1 = flatten(json_decode($json1,true));

$array2 = flatten(json_decode($json2,true));

print_r(array_diff($array1,$array2));

结果: -

Array ( [0] => arrowssss.png ) 

答案 1 :(得分:0)

$json1='[
    {"file":"arrowssss.png"},
    {"file":"arrows.png"},
    {"file":"logo.png"}
]';
$json2 = '[
    {"file":"arrows.png"},
    {"file":"logo.png"}
]';
function getFile($key)
{
    return isset($key['file']) ? $key['file'] : null;
}
$diff = array_diff(array_map('getFile', json_decode($json1, true)), array_map('getFile', json_decode($json2, true)));
print_r($diff);

结果: -

Array ( [0] => arrowssss.png )