我有一个数组,数组键包含文件名,数组值将是另一个包含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数组键及其对应的值。
答案 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。