in_array,needle和haystack都是一个数组

时间:2014-01-27 10:36:17

标签: php

是否有检查数组中某些值的函数?我有2个数组,1个有文件扩展名,1个有混合内容。 In_array只使用字符串。

谢谢!

文件示例:

picture21474.png

允许的扩展程序:

$extensions = array('gif', 'jpg', 'png');

我在文件上的一个圆点上爆炸。但是当你使用explode时,文件被设置为一个数组()。现在我想检查文件扩展名是否合法。类似于in_array($ extensions,$ explosionFile)

2 个答案:

答案 0 :(得分:3)

有两个功能可以帮助您:

  1. array_intersect ( array $array1 , array $array2 [, array $... ] ) array_intersect()返回一个数组,其中包含所有参数中存在的array1的所有值。请注意,密钥保留。 http://ro1.php.net/manual/en/function.array-intersect.php

  2. array_diff ( array $array1 , array $array2 [, array $... ] ) 将array1与一个或多个其他数组进行比较,并返回array1中任何其他数组中不存在的值。 http://ro1.php.net/array_diff

答案 1 :(得分:2)

您可以尝试使用array_intersect

$intersect = array_intersect($array1, $array2);
echo count($intersect) . ' elements in array2';

如果您想检查$array1中的所有元素是否都在$array2,请执行:

if (count($intersect) == count($array1)) {}

编辑:

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

$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
}