请帮助我理解如何借助其他数组值过滤多维作为第一个数组的键。
$multidimensional = Array (
[0] => Array('var1' => val1),
[1] => Array('var2' => val2),
[2] => Array('var3' => val3),
[3] => Array('val4' => val4)
);
$filter = Array(1, 3);
最终结果应为:
$multidimensional = Array (
[1] => Array('var2' => val2),
[3] => Array('val4' => val4)
);
它应该与array_slice或其他方法类似,如何轻松执行此类任务。提前谢谢!
答案 0 :(得分:2)
您可以使用array_intersect_key功能:
$result = array_intersect_key($multidimensional, array_flip($filter));
答案 1 :(得分:1)
用一个小例子扩展我的评论
<?php
$arrayOne = [
1 => ['foo' => 'bar'],
2 => ['foo' => 'bar'],
3 => ['foo' => 'bar'],
4 => ['foo' => 'bar'],
];
$arrayTwo = [1 => [], 3 => []];
print_r(array_intersect_key($arrayOne, $arrayTwo));
在php.net上查看array_intersect_key
答案 2 :(得分:1)
使用array_diff_key
和array_flip
函数的另一种变体:
$multidimensional = array_diff_key($multidimensional, array_diff_key($multidimensional, array_flip($filter)));
print_r($multidimensional);
输出:
Array
(
[1] => Array
(
[var2] => val2
)
[3] => Array
(
[val4] => val4
)
)