0

我有两个数组 $a 和 $b。

$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中有什么方法吗?

4

2 回答 2

0

像这样的东西?

$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 行应该是一个问题。

于 2012-08-07T06:43:06.597 回答
0

如果没有循环,您将无法执行此操作,但这不会很耗时。尝试这个:

foreach ($b as $key => $value) {
    if (sizeof(array_diff_assoc($a[0], $value)) > 0) {
        unset($b[$key]);
    }
}
于 2012-08-07T15:31:24.827 回答