如何比较数组中的文件扩展名并抛出错误?

时间:2015-03-02 08:11:44

标签: php arrays foreach associative-array file-extension

我正在关注标题为$aSupportedImages的文件扩展名数组:

Array
(
    [0] => jpeg
    [1] => jpg
    [2] => gif
    [3] => png
)

我的另一个名为$values的数组如下:

Array
(
    [vshare] => Array
        (
            [course_error.png] => Array
                (
                    [0] => https://www.filepicker.io/api/file/Y0n99udSqS6ZJWYeYcUA
                )

            [before_login.png] => Array
                (
                    [0] => https://www.filepicker.io/api/file/19FWbHh1QNGCo2OINxI6
                )

            [Sample_1.docx] => Array
                (
                    [0] => https://www.filepicker.io/api/file/INjMeEhCSjpZSfZJmQUb
                )

        )

)

现在您可以看到数组[vshare]中的每个键都是文件名。我想检查每个此类文件的扩展名,并使用数组$aSupportedImages中的扩展名。如果任何文件的扩展名与数组$aSupportedImage中存在的扩展名不同,则循环应该中断,并且应该返回false。

在第三个文件的上述情况下,它应该返回false。由于.docx不存在于数组$aSupportedImages

我该怎么做?请帮帮我。

3 个答案:

答案 0 :(得分:0)

请尝试in_array

 foreach($vshareArray as $key => $value){
      if(in_array($key, $aSupportedImages)){
       echo "valid";
    }else{
     echo "not valid";
    }
    }

答案 1 :(得分:0)

如果文件的扩展名不受支持

,则会中断
foreach($values['vshare'] as $file)
{
    if(!in_array(pathinfo($file, PATHINFO_EXTENSION), $aSupportedImages))
        break;
}

答案 2 :(得分:0)

试试这个:



<?php
      
  function get_ext($filename) {
  
    return strtolower(substr($filename, strrpos($filename, '.')));

  }

  $ext_authorized = array('.jpg', '.jpeg', '.png', '.gig');

  $values = array (
    'vshare' => array (
      'course_error.png' => array ('https://www.filepicker.io/api/file/Y0n99udSqS6ZJWYeYcUA'),
      'before_login.png' => array ('https://www.filepicker.io/api/file/19FWbHh1QNGCo2OINxI6'),
      'Sample_1.docx' => array ('https://www.filepicker.io/api/file/INjMeEhCSjpZSfZJmQUb')
    )
  );

  foreach($values['vshare'] as $key => $val) {
      
    if (in_array(get_ext($key), $ext_authorized)) {
  
      //do something

    } else {

      //do something

    }
    
  }
?> 
&#13;
&#13;
&#13;