如何在此条件下取消设置数组元素 php



我的数组看起来像这样:

Array
(
[1] => Array
    (
        [0] => /webmail/
        [1] => 42024
        [2] => 246538196
        [3] => 72
        [4] => 70
    )
[2] => Array
    (
        [0] => /public/index.php
        [1] => 6022
        [2] => 2575777
        [3] => 40
        [4] => 153
    )
[3] => Array
    (
        [0] => /
        [1] => 293
        [2] => 5326453
        [3] => 184
        [4] => 76
    )
[4] => Array
    (
        [0] => /webmail/skins/larry/watermark.html
        [1] => 248
        [2] => 40225
        [3] => 0
        [4] => 2
    )
[5] => Array
    (
        [0] => /webmail/program/resources/blank.tif
        [1] => 182
        [2] => 29406
        [3] => 0
        [4] => 1
    )

等等...当我想删除以 .tif/.js/.css/.woff 结尾的每个元素时,我只使用 :

$key = array_search('*.tif',$sider); // for example for .tif
unset($sider[$key]);

但它不起作用!我的代码中有什么问题以及如何删除多个条件,例如所有以 .tif/.js/.css/.woff 结尾的字符串。

谢谢

>array_search不起作用,因为数组的每个元素都是一个数组,而数组与"*.tif"不匹配。此外,array_search不支持像 * 这样的通配符。数组过滤器是这里的典型方法:

$sider = array_filter($sider, function (array $element) {
    return !preg_match('/.tif$/i', $element[0]);
});

循环遍历值,如果扩展名位于不允许的扩展数组中,则取消设置元素。

$remove_extensions = array('tif', 'js');
foreach($arr as $key => $value) {
    if(in_array(pathinfo($value[0], PATHINFO_EXTENSION), $remove_extensions)) { unset($arr[$key]); }
}
<?php
function removeDeep($array, $pattern) {
    $r = array();
    if (!is_array($array)) {
        trigger_error(__FUNCTION__ . ' expected paramater 1 to be an array.', E_USER_WARNING);
        return false;
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            $r[$key] = call_user_func(__FUNCTION__, $value, $pattern);
            continue;
        }
        if (!preg_match($pattern, $value)) {
            $r[$key] = $value;
        }
    }
    return $r;
} 
$sider = removeDeep( $sider, "*.tif");
?> 

试试 smth like

var_dump(
    array_filter(
        $array,
        function ($row) {
            return preg_match('/.(tif|css|js|woff))$/i', $row[0]) === 1;
        }
    )
);

相关内容

  • 没有找到相关文章

最新更新