Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用来自另一个数组的键过滤多维数组_Php_Arrays - Fatal编程技术网

Php 如何使用来自另一个数组的键过滤多维数组

Php 如何使用来自另一个数组的键过滤多维数组,php,arrays,Php,Arrays,我想使用我的仅包含键的小数组来过滤大数组,并返回仅包含匹配键的数组。例如: 阵列1(大阵列) 如果我使用return$array;这将为我提供所有键和值。但我只想从上面的键中获取键21和15,并删除其他值。怎么做 阵列2(过滤器) 我想使用array2 21和15来过滤和转换大数组,使之成为一个只包含21和15个值的数组,不仅仅是键,而是一个没有35,23…其他键的完整数组 如何实现这一点?循环$array,并取消设置所有不在$array2中的键,如: foreach ($array as $k

我想使用我的仅包含键的小数组来过滤大数组,并返回仅包含匹配键的数组。例如:

阵列1(大阵列)

如果我使用return$array;这将为我提供所有键和值。但我只想从上面的键中获取键21和15,并删除其他值。怎么做

阵列2(过滤器)

我想使用array2 21和15来过滤和转换大数组,使之成为一个只包含21和15个值的数组,不仅仅是键,而是一个没有35,23…其他键的完整数组


如何实现这一点?

循环
$array
,并取消设置所有不在
$array2
中的键,如:

foreach ($array as $k => $v) {
    if (!in_array($k, $array2)) {
        unset($array[$k]);
    }
}
您可以使用将想要的结果提取到新数组中:

$keys = [21, 15];
$result = array_intersect_key($array, array_flip($keys));

有更快的解决方案吗?如果大数组中有1000个键。。而且只需要返回其中的10个……我的意思是,该解决方案会影响任何事情吗?@user2780294:更快,否则,您需要对其进行基准测试,如果您希望知道哪一个更快;)好的,如果我的大数组中有1000个键。哪种解决方案对我来说更快?对不起,noobhere@user2780294:如果您在
$array
中有1000个键,并且您只需要其中的几个键,那么这可能是您能做的最快的。但请记住两件事:a)1000个项目并不多,人类无法注意到差异;b)所有“哪个更快”问题的正确答案是测量它。
foreach ($array as $k => $v) {
    if (!in_array($k, $array2)) {
        unset($array[$k]);
    }
}
$keys = [21, 15];
$result = array_intersect_key($array, array_flip($keys));