繁体   English   中英

PHP多维数组相交

[英]PHP multi dimensional array intersect

我写了这段代码:

<?php

$aArray = array
( 
array(0,0,0), 
array(1,0,0),
array(2,0,0),
array(3,0,0),
array(4,0,0),
array(5,0,0),
array(6,0,0),
array(7,0,0)
);

$jump = array
( 
array(0,0,0), 
array(1,0,0),
array(9,7,4),
array(3,0,0),
array(4,0,0),
array(5,0,0),
array(6,0,0),
array(7,0,0)
);

$result = array_intersect($aArray, $jump);

echo var_dump($result);

我得到的结果是这样的:

array(8) { 
[0]=> array(3) { 
    [0]=> int(0) 
    [1]=> int(0) 
    [2]=> int(0) } 
[1]=> array(3) { 
    [0]=> int(1) 
    [1]=> int(0) 
    [2]=> int(0) } 
[2]=> array(3) { 
    [0]=> int(2) 
    [1]=> int(0) 
    [2]=> int(0) } 
[3]=> array(3) { 
    [0]=> int(3) 
    [1]=> int(0) 
    [2]=> int(0) } 
[4]=> array(3) { 
    [0]=> int(4) 
    [1]=> int(0) 
    [2]=> int(0) } 
[5]=> array(3) { 
    [0]=> int(5) 
    [1]=> int(0) 
    [2]=> int(0) } 
[6]=> array(3) { 
    [0]=> int(6) 
    [1]=> int(0) 
    [2]=> int(0) } 
[7]=> array(3) { 
    [0]=> int(7) 
    [1]=> int(0) 
    [2]=> int(0) } 
    }

为什么第二个索引不返回null? 我尝试清空缓存,以防缓存中存储了旧值。 我还注意到,如果我从跳转数组中删除最后一个数组,它仍然会产生7,0,0。 这是一个怪异的异常吗?

array_intersect()不是递归的,它将内部数组视为一个数组。 您将需要使用以下内容:

function array_intersect_recursive() {

    foreach(func_get_args() as $arg) {
        $args[] = array_map('serialize', $arg);
    }
    $result = call_user_func_array('array_intersect', $args);

    return array_map('unserialize', $result);
}

$result = array_intersect_recursive($aArray, $jump);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM