PHP:Array从数组变量中删除特定键

时间:2013-05-15 07:16:47

标签: php

我有一个数组,数组键包含文件名,数组值将是另一个包含sfile大小,日期等的数组。

在这些数组列表中,我只想存储 xls xlsx 文件。我需要删除所有其他扩展名的文件。

PHP中是否有预定义的功能?

注意:我有常量变量这个变量包含类似VAR_FILE_EXT =“xls,xlsx,csv”

[sample.xls] => Array (
            [size] => 3353
            [uid] => 1012
            [gid] => 1013
            [permissions] => 33188
            [atime] => 1338497357
            [mtime] => 1338497357
            [type] => 1
        )

[sample.csv] => Array (
            [size] => 3353
            [uid] => 1012
            [gid] => 1013
            [permissions] => 33188
            [atime] => 1338497357
            [mtime] => 1338497357
            [type] => 1
        )

[sample.txt] => Array (
            [size] => 3353
            [uid] => 1012
            [gid] => 1013
            [permissions] => 33188
            [atime] => 1338497357
            [mtime] => 1338497357
            [type] => 1
        )

在这个例子中,我想只删除sample.txt数组键及其对应的值。

2 个答案:

答案 0 :(得分:1)

$filtered = array_intersect_key(
    $array,
    array_filter(array_keys($array), function ($name) { return preg_match('/\.xlsx?$/', $name); })
);

答案 1 :(得分:1)

$your_array = array(
    'sample.xls' => ...
    'sample.csv' => ...
    'sample.txt' => ...
);

$extensions = '/('.str_replace(', ', '|', $VAR_FILE_EXT).')$/i';
$new_array = array();

foreach ($your_array as $file => $stuff) {
    if (preg_match($extensions, $file)) {
        $new_array[$file] => $stuff;
    }
}

然后你使用$ new_array。