array_intersect 内部多维数组

Posted

技术标签:

【中文标题】array_intersect 内部多维数组【英文标题】:array_intersect Inside multidimensional-array 【发布时间】:2013-01-12 07:36:17 【问题描述】:

我有一个多维数组,可以根据用户输入增加。我想在数组内部做 array_intersect 以获得键之间的公共值。

像例子

Array ( [php] => Array ( [0] => 36 [1] => 51 [2] => 116 [3] => 171 [4] => 215 [5] => 219 [6] => 229 [7] => 247 [8] => 316 ) [java] => Array ( [0] => 14 [1] => 16 [2] => 19 [3] => 24 [4] => 25 [5] => 26 [6] => 29 [7] => 31 [8] => 33 [9] => 34 [10] => 35 [11] => 36 [12] => 37 [13] => 40 [14] => 45 [15] => 49 [16] => 51 ) ) 

预期的输出应该是 (36,51)

这是我能够得到它

通过这个,

$intersected_array = call_user_func_array('array_intersect', $array);

但是如果我的数组还有第三个键,它在所有三个中都没有共同的值

喜欢

Array ( [php] => Array ( [0] => 36 [1] => 51 [2] => 116 [3] => 171 [4] => 215 [5] => 219 [6] => 229 [7] => 247 [8] => 316 ) [java] => Array ( [0] => 14 [1] => 16 [2] => 19 [3] => 24 [4] => 25 [5] => 26 [6] => 29 [7] => 31 [8] => 33 [9] => 34 [10] => 35 [11] => 36 [12] => 37 [13] => 40 [14] => 45 [15] => 49 [16] => 51 ) [ajax] => Array ( [0] => 91 [1] => 110 [2] => 113 [3] => 172 ) ) 

然后它会将我的输出作为具有最大值的键的结果。在这种情况下,它将返回 java 键的所有值。

但我的预期输出是0。请帮忙。

【问题讨论】:

您能否编辑您的问题以包含您正在使用的确切代码。正如您所期望的那样,重新创建您的数组并运行显示的代码会在我的机器上返回一个空数组。 它对我和 GreenRiver 都很好。你确定这不是一个简单的疏忽,就像你没有传递你认为你做的变量? 谢谢大家的支持,它工作正常,是我在代码中的错误导致我进入差异输出。真的很抱歉因为我的愚蠢错误打扰大家。 【参考方案1】:

我复制了你的例子,对我来说它有效:

<?php

$array = array(
    'php' => array(
        36,
        51,
        116,
        171,
        215,
        219,
        229,
        247,
        316,
    ),
    'java' => array(
        14,
        16,
        19,
        24,
        25,
        26,
        29,
        31,
        33,
        34,
        35,
        36,
        37,
        40,
        45,
        49,
        51,
    ),
    'ajax' => array(
        91,
        110,
        113,
        172,
    ),
);

$intersected_array = call_user_func_array('array_intersect',$array);

print_r($intersected_array);

// RESULT: "Array ( ) "

请准确复制这段代码并告诉我你的输出。

【讨论】:

好的,现在你的问题在哪里? 他在“预期输出应该像(36,51)”这个问题中提到过你没看到?????@GreenRover 但是 ajax 不包括 36 和 51。您想获取多个数组中的所有数字,但不必在所有数组中? 你只写了“java*”和“php”,你想得到36、51。没错,这就是没有“ajax”数组的情况。但是,如果您还有 ajxa 数组,则结果是一个 emty 数组。但我还是不明白你在期待什么。 @Anthony,你们是对的,代码工作正常,我的完整代码集中有一个错误。很抱歉打扰大家..

以上是关于array_intersect 内部多维数组的主要内容,如果未能解决你的问题,请参考以下文章

具有未知键数的多维数组上的PHP Array_intersect

Array_Intersect 未按预期工作

c++ - 如何将多维数组传递给没有内部维度的函数? [复制]

javascript 按照块大小(每个子阵列的元素数)将平面数组分组到多维数组中

PHP 多维数组

PHP - 多维数组