是否有检查数组中某些值的函数?我有2个数组,1个有文件扩展名,1个有混合内容。 In_array只使用字符串。
谢谢!
文件示例:
picture21474.png
允许的扩展程序:
$extensions = array('gif', 'jpg', 'png');
我在文件上的一个圆点上爆炸。但是当你使用explode时,文件被设置为一个数组()。现在我想检查文件扩展名是否合法。类似于in_array($ extensions,$ explosionFile)
答案 0 :(得分:3)
有两个功能可以帮助您:
array_intersect ( array $array1 , array $array2 [, array $... ] )
array_intersect()返回一个数组,其中包含所有参数中存在的array1的所有值。请注意,密钥保留。
http://ro1.php.net/manual/en/function.array-intersect.php
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
}