如果数组键包含搜索数组中的某些字符串,如何取消设置?

时间:2014-01-18 12:21:47

标签: php arrays

我的阵列打印看起来像这样 的print_r($ myArray的);

Array
(
     [http://link_to_the_file/stylename2.css] => Array
        (
            [mime] => text/css
            [media] => 
            [attribs] => Array
                (
                )

        )

    [http://link_to_the_file/stylename1.css] => Array
        (
            [mime] => text/css
            [media] => 
            [attribs] => Array
                (
                )

        )

    [http://link_to_the_file/stylename5.css] => Array
        (
            [mime] => text/css
            [media] => 
            [attribs] => Array
                (
                )

        )
)

我需要找到stylename 2和5并取消设置它们但我想只通过它们的名称而不是完整的数组键找到它们。所以我将搜索条件放在数组中。

$findInArray = array('stylename2.css','stylename5.css');


foreach($myArray as $path => $file ){


    //  if $path contains a string from $findInArray 
       unset $myArray [$path];

}

最好的方法是什么?我尝试了array_key_exists但它只匹配精确的键值。 谢谢!

3 个答案:

答案 0 :(得分:1)

试试这个:

$findInArray = array('stylename2.css','stylename5.css');
foreach($myArray as $path => $file ){
      foreach($findInArray as $find){
           if(strpos($path, $find) !== false)
              unset($myArray[$path]);
      }
}

答案 1 :(得分:1)

你可以使用PHP in_array()函数。

foreach($myArray as $path => $file) {
    if(in_array(basename($path), $findInArray)) {
        unset($myArray[$path]);
    }
}

答案 2 :(得分:1)

使用basename()in_array()

foreach($myArray as $path => $file ){
    $filename = basename($path);
    if (in_array($filename, $findInArray)) {
        unset($myArray[$path]);
    }
}

Demo.