完成一个开源的Domain Registrar插件并且在确定何时进行更改时遇到一些麻烦。PHP比较两个数组并仅返回唯一的数组值
$saved = array(
array('domain' => 'mydomain.com', 'record' => 'A', 'value' => '8.8.8.8'),
array('domain' => 'mydomain.com', 'record' => 'NS', 'value' => 'ns1.mydomain.com')
);
$new = array(
array('domain' => 'mydomain.com', 'record' => 'A', 'value' => '4.4.4.4'),
array('domain' => 'mydomain.com', 'record' => 'NS', 'value' => 'ns1.mydomain.com'),
array('domain' => 'sub.mydomain.com', 'record' => 'A', 'value' => '1.2.3.4'),
);
$saved
是已经保存在域注册商的值,并且只被用于比较。
$new
是从处理网站上的表单的应用程序返回的数组。
我需要以某种方式只返回值已更新或不存在/从$saved
匹配的数组。
基本上返回数组我要找的是:
array(
array('domain' => 'mydomain.com', 'record' => 'A', 'value' => '4.4.4.4')
array('domain' => 'sub.mydomain.com', 'record' => 'A', 'value' => '1.2.3.4'),
);
由于$saved
的value
从8.8.8.8
更新到4.4.4.4
和sub.mydomain.com
没有从$saved
这意味着它是一个新的条目匹配任何数组。
使用array_intersect
我能够得到它返回的数组已更新值,但不幸的是它仍然包含匹配的数组。如果我能以某种方式删除那些正是我需要的东西。
这里有一个演示: http://glot.io/php/529b0c6d2fd16fe221f86bb521155384
也许使用array_uintersect
有一个回调,以检查是否匹配阵列和取消?寻找一些帮助,因为我现在卡住了。
谢谢!
什么'$差异= array_diff($ new,array_intersect($ new,$ saved));'? – 2014-09-23 02:04:57