Php 在_数组中,针和草垛都是一个数组

Php 在_数组中,针和草垛都是一个数组,php,Php,是否有用于检查数组中某些值的函数?我有两个数组,一个是文件扩展名,一个是混合格式。In_数组仅使用字符串 已经谢谢你了 文件示例: picture21474.png 允许的扩展: $extensions = array('gif', 'jpg', 'png'); 我在文件上的一个点上爆炸。但是当您使用explode时,该文件被设置为数组()。现在我想检查一下文件扩展名是否合法。类似于数组中的($extensions,$explodedFile)您可以尝试: 如果要检查$array1中的所有元

是否有用于检查数组中某些值的函数?我有两个数组,一个是文件扩展名,一个是混合格式。In_数组仅使用字符串

已经谢谢你了

文件示例:

picture21474.png
允许的扩展:

$extensions = array('gif', 'jpg', 'png');
我在文件上的一个点上爆炸。但是当您使用explode时,该文件被设置为数组()。现在我想检查一下文件扩展名是否合法。类似于数组中的($extensions,$explodedFile)

您可以尝试:

如果要检查
$array1
中的所有元素是否位于
$array2
中,请执行以下操作:

if (count($intersect) == count($array1)) {}
编辑:

如果要检查文件扩展名是否包含在扩展名数组中,请执行以下操作:

$filename   = 'picture21474.png';
$extensions = array('gif', 'jpg', 'png');
list($name, $extension) = explode('.', $filename);

if (in_array($extension, $extensions) ) {
  // extension is valid
}
编辑2:

有效获取文件的扩展名:

$filename = 'picture21474.png';
$info     = pathinfo($filename);

if (in_array($info['extension'], $extensions) ) {
  // extension is valid
}

有两个功能可以帮助您实现这一点:

  • array\u intersect(数组$array1,数组$array2[,数组$…])
    array_intersect()返回一个数组,该数组包含所有参数中存在的array1的所有值。请注意,关键点是保留的。

  • array_diff(数组$array1,数组$array2[,数组$…])
    将array1与一个或多个其他数组进行比较,并返回array1中不存在于任何其他数组中的值。


  • 那么这个函数到底会做什么呢?看看针头里的所有东西都在干草堆里吗?至少一项?请提供更多信息。您想在哪个数组中搜索什么?您能发布您尝试过的内容/示例数据源吗?我现在使用array_intersect,它工作正常。你的路走得更快还是更好?或者它只是程序员的一个预引用?使用
    array\u intersect
    比循环数组更快。但是,如果您想检查扩展是否有效,最好使用我的第二个解决方案。您能为我解释一下代码吗?我听过list函数,但不知道我在做什么,PHP.net网站只有英文版本,因此很难理解它在缺少信息的情况下做了什么
    list()
    函数将数组中的元素分配给
    list()
    中定义的变量。因此,如果
    explode
    函数返回:
    数组(0=>'picture21474',1=>'png')
    $name
    获取
    0
    值,
    $extension
    获取
    1
    值。aaaa!非常好的功能!谢谢但是,有一个小问题:如果用户使用文件名picture.21474.png,那么数组将获得3种类型的值:0=picture、1=21474、2=png
    $filename = 'picture21474.png';
    $info     = pathinfo($filename);
    
    if (in_array($info['extension'], $extensions) ) {
      // extension is valid
    }