删除除另一个数组中具有索引的数组元素之外的所有数

时间:2015-08-12 17:19:27

标签: php arrays

我正在寻找一个我以前用过的PHP函数。我有两个数组:一个主要的数组值和一个索引数组。我想要一种简单的方法来保留索引位于数组之后的所有值,并删除其余的值。所以,我已经通过像这样的foreach循环遍历数组解决了这个问题:

$array      = array("Foo", "Bar", "Foobar", "Test");
$indexlist  = array(0, 2);

foreach($array as $index => $value) {

    if(in_array($index, $indexlist)) {

        $result[]   = $value;

    }

}

所以我的问题不是如何解决问题本身,而是:是否有这样做的PHP函数?这个问题实际上只是基于好奇心,因为我想我记得我曾经使用过这样的功能更早。上面的循环产生以下输出,请求的函数也应该:

Array
(
    [0] => Foo
    [1] => Foobar
)

2 个答案:

答案 0 :(得分:1)

您可能会寻找array_intersect_key()。此外,因为在你的第二个数组中,键是值,你只需要用array_flip()翻转数组。

你可以把它放在一起,例如。

print_r(array_intersect_key($array, array_flip($indexlist)));

答案 1 :(得分:0)

$array      = array("Foo", "Bar", "Foobar", "Test");
$indexlist  = array(0, 2);

foreach($indexlist as $value) {

    if(isset($array[$value])) {

        $result[]   = $array[$value];

    }

}