-2

为什么我们使用 $extension = end($temp); 在这段代码中?这究竟是做什么的

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
4

3 回答 3

2

此示例使用 end() 函数检索 $temp 数组的最后一个元素。最后一个元素包含文件名的扩展名。http://php.net/manual/en/function.end.php

于 2013-07-27T11:10:17.993 回答
1

正如 Märis 告诉您的那样,它获取数组的最后一个元素,在您的文件名的情况下,它是文件扩展名(或者将是最多的时间)

在最后一行检查扩展是否是 $allowedExts 之一。

但它是冗余检查,因为之前的文件类型检查。

于 2013-07-27T11:13:43.747 回答
1

end() 将数组的内部指针前进到最后一个元素,并返回其值。

它不只是返回值。它需要一个&reference参数是它也移动了内部数组指针。没有next()end()。只有current()reset()

于 2013-07-27T11:44:02.933 回答