比较PHP中的两个数组

时间:2014-01-23 16:56:03

标签: php arrays union intersect

我在PHP $数组中有一个数组,其中包含

等元素
$array['id'].. $array['name'] $array['class']

我有另一个名为$ array1的数组,其元素只有$ array1 ['uid']。 我希望在$array['id'] and $array['uid']的基础上匹配这两个数组 这样我想得到的元素$ array ['id']不等于$ array ['uid']` 在PHP中是否有任何内置函数,我可以使用我的客户函数为每个循环执行此操作,但是有任何函数吗?

输入是如果$ array有id = 2,4,5,6而$ array有uid = 2,4那么我应该得到$ array id = 5,6

$ array中的数据看起来像这样

{
      "name": "abc", 
      "id": "37402526"
    }, 
    {
      "name": "def", 
      "id": "506768590"
    }, 
    {
      "name": "hij", 
      "id": "526405977"
   }

和$ array 1一样

{

      "id": "37402526"
    }, 
    {

      "id": "506768590"
    }, 
    {
      "
      "id": "526405977"
   }

2 个答案:

答案 0 :(得分:0)

如果你的输入只是你用的例子,那么很简单:

$array['id'] = implode(',', array_diff(explode(',', $array['id']), explode(',', $array1['uid'])));

问候。

答案 1 :(得分:0)

如果你可以重写你的代码,使用数组键中的id,那么你可以使用array_diff_key():

$array = array(
    '12' => array('name' => 'abc'),
    '34' => array('name' => 'def')
);

$array2 = array('12' => true);

$result = array_diff_key($array, $array2);

否则你可以使用array_udiff():

function my_id_cmp($a, $b) {
    return strcmp($a['id'], $b['id']);
}

$result = array_udiff($array, $array1, 'my_id_cmp');