按其他数组

时间:2016-05-23 12:11:11

标签: php arrays multidimensional-array filtering

请帮助我理解如何借助其他数组值过滤多维作为第一个数组的键。

$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或其他方法类似,如何轻松执行此类任务。提前谢谢!

3 个答案:

答案 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_keyarray_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
        )
)

http://php.net/manual/en/function.array-diff-key.php