php中的多维数组差异
问题描述:
我有两个数组$ a和$ b。php中的多维数组差异
$a = Array
(
[0] => Array
(
[a] => 1
[d] => CONTACT
[f] => 2
)
)
and
$b = Array
(
[0] => Array
(
[a] => 1
[b] => 1
[c] => 4
[d] => CONTACT
[e] => 2012-08-07 05:56:18
[f] => 2
)
[1] => Array
(
[a] => 2
[b] => 3
[c] => 4
[d] => CONTACT
[e] => 2012-08-07 05:56:18
[f] => 1
)
[2] => Array
(
[a] => 2
[b] => 4
[c] => 4
[d] => CONTACT
[e] => 2012-08-07 05:56:18
[f] => 1
)
)
如果第一个数组的a,d,f字段与第二个数组匹配,我想删除第二个数组的父数组。在这种情况下, 我想做unset($b[0]);
。如何在没有循环的情况下做到这一点?如果不能,给我一个循环的解决方案。在cakephp中有没有任何方法?
答
像这样的东西?
$count = count($b)
for($i = 0; $i < $count; $i++)
{
foreach($a[0] as $c => $v)
{
$match = true;
if($b[$i][$c] != $v)
{
$match = false;
}
if($match)
unset($b[$i]);
}
}
这可能会做的伎俩,但我想会有某种更快的方法... 但是,我认为500行应该是一个问题。
答
你不能这样做没有循环,但它不会花费时间。试试这个:
foreach ($b as $key => $value) {
if (sizeof(array_diff_assoc($a[0], $value)) > 0) {
unset($b[$key]);
}
}
第一个数组有'a,d,f'键。你能澄清吗? – tigrang 2012-08-07 06:19:59
为什么你不想使用循环? – 2012-08-07 06:22:23
数组可能包含500行。我认为循环会消耗很多处理能力 – EbinPaulose 2012-08-07 06:25:42