Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何比较下面的二维数组?_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 我如何比较下面的二维数组?

Php 我如何比较下面的二维数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我只需要基于“value”键的数组1中不存在的元素 阵列1 $array1 = array( array('value' => 113214, 'revision_id' => 2047152), array('value' => 236462, 'revision_id' => 2045678), array('value' => 236541, 'revision_id' => 2047155) ); 阵列2 $array2

我只需要基于“value”键的数组1中不存在的元素

阵列1

$array1 = array(
     array('value' => 113214, 'revision_id' => 2047152),
     array('value' => 236462, 'revision_id' => 2045678),
     array('value' => 236541, 'revision_id' => 2047155)
);
阵列2

$array2 = array(
    array('value' => 113214, 'revision_id' => 2047152),
    array('value' => 236461, 'revision_id' => 2047153),
    array('value' => 236541, 'revision_id' => 2047155)
);
我需要如下输出,数组的差异应该基于值

$output = array(
    array('value' => 236462, 'revision_id' => 2045678)
);

只需执行嵌套的foreach循环并检查条件,希望它能帮助您:

$arraycheck= array();

foreach($newData as $data1) {

  $duplicatecheck = false;
  foreach($oldData as $data2) {
    if($data1['value'] === $data2['value'] && $data1['revision_id'] === $data2['revision_id']) $duplicatecheck = true;
  }

  if($duplicatecheck === false) $arraycheck[] = $data1;
}

只需执行嵌套的foreach循环并检查条件,希望它能帮助您:

$arraycheck= array();

foreach($newData as $data1) {

  $duplicatecheck = false;
  foreach($oldData as $data2) {
    if($data1['value'] === $data2['value'] && $data1['revision_id'] === $data2['revision_id']) $duplicatecheck = true;
  }

  if($duplicatecheck === false) $arraycheck[] = $data1;
}
您可以使用接受最后一个参数的函数作为回调函数,并且可以在这里轻松定义比较

$array1 = [
    ['value' => '113214', 'revision_id' => '2047152'],
    ['value' => '236462', 'revision_id' => '2045678'],
    ['value' => '236541', 'revision_id' => '2047155'],
];
$array2 = [
    ['value' => '113214', 'revision_id' => '2047152'],
    ['value' => '236461', 'revision_id' => '2047153'],
    ['value' => '236541', 'revision_id' => '2047155'],
];

$result = array_udiff ($array1, $array2, function($x, $y) {
    return $x['value'] - $y['value'];
});
print_r($result);
您可以使用接受最后一个参数的函数作为回调函数,并且可以在这里轻松定义比较

$array1 = [
    ['value' => '113214', 'revision_id' => '2047152'],
    ['value' => '236462', 'revision_id' => '2045678'],
    ['value' => '236541', 'revision_id' => '2047155'],
];
$array2 = [
    ['value' => '113214', 'revision_id' => '2047152'],
    ['value' => '236461', 'revision_id' => '2047153'],
    ['value' => '236541', 'revision_id' => '2047155'],
];

$result = array_udiff ($array1, $array2, function($x, $y) {
    return $x['value'] - $y['value'];
});
print_r($result);
摘自:

用法:

$diff = my_array_diff($arr1, $arr2);
var_dump($diff);
摘自:

用法:

$diff = my_array_diff($arr1, $arr2);
var_dump($diff);
首先,使用将“value”的值从array2获取到一维数组中:

$a2values = array_column($array2, 'value');
然后使用这些值排列1

首先,使用将“value”的值从array2获取到一维数组中:

$a2values = array_column($array2, 'value');
然后使用这些值排列1


非常感谢..您的代码工作了,但将$duplicate更改为$duplicatecheck,然后工作了。哦,感谢@user3686276的错误谢谢您..您的代码工作了,但将$duplicate更改为$duplicatecheck,然后工作了。哦,感谢@user3686276的错误