Search code examples
phpunsetarray-unset

How to unset array element in this condition php


My array looks like this:

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
    )

and so on... When I want to remove the every element that ends with .tif/.js/.css/.woff I just use :

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

but it doesn't work ! What the problem in my code and how to delete with multiple condition like for all the strings that end with .tif/.js/.css/.woff.

Thanks


Solution

  • array_search doesn't work, since each element of the array is an array, and an array doesn't match "*.tif". Besides, array_search does not support wildcards like *. An array filter would be the typical approach here:

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