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