$imageTypes = array("image/gif", "image/jpeg", "image/png","image/jpg");
$uploadData = array_shift($check);
print_r($uploadData)
Array
(
[name] => Chrysanthemum.jpg
[type] => image/jpeg
[tmp_name] => C:\xampp\tmp\phpAADE.tmp
[error] => 0
[size] => 879394
)
if(!in_array($uploadData['type'],$imageTypes)){
return false;
}
但是我收到错误未初始化的字符串偏移量:0在这下面的行
if(!in_array($uploadData['type'],$imageTypes)){
答案 0 :(得分:0)
在您的代码上,$ check未定义。
$imageTypes = array("image/gif", "image/jpeg", "image/png","image/jpg");
$uploadData = array_shift($check);
if(!in_array($uploadData['type'],$imageTypes)){
return false;
}
也许你必须解决:
$imageTypes = array("image/gif", "image/jpeg", "image/png","image/jpg");
$uploadData = array_shift($imageTypes);
if(!in_array($uploadData['type'],$imageTypes)){
return false;
}
答案 1 :(得分:0)
我想我明白这里可能会发生什么。 array_shift()
数组中$check
的值可能是空字符串。请考虑以下示例:
$imageTypes = array("image/gif", "image/jpeg", "image/png","image/jpg");
$check = array(
'' // empty string
);
$uploadData = array_shift($check);
var_dump(in_array($uploadData['type'], $imageTypes));
这引发了以下警告/通知:
PHP警告:非法字符串偏移'类型'在/Users/darragh/Sites/so.php第26行 PHP堆栈跟踪: PHP 1. {main}()/Users/darragh/Sites/so.php:0 PHP注意:未初始化的字符串偏移:第26行的/Users/darragh/Sites/so.php中为0 PHP堆栈跟踪: PHP 1. {main}()/Users/darragh/Sites/so.php:0
警告:非法字符串偏移'类型'在/Users/darragh/Sites/so.php第26行
调用堆栈: 0.0002 227040 1. {main}()/Users/darragh/Sites/so.php:0
注意:未初始化的字符串偏移量:在第26行的/Users/darragh/Sites/so.php中为0
调用堆栈: 0.0002 227040 1. {main}()/Users/darragh/Sites/so.php:0
布尔(假)
请注意,您的通知PHP Notice: Uninitialized string offset: 0
就在那里。
无论哪种方式,您都应该使代码健壮,可能会引发异常或以您首选的方式处理错误。类似的东西:
$uploadData = array_shift($check);
// die if the data is not an array or if it does not have the expected key
if (!is_array($uploadData) || !array_key_exists('type', $uploadData)) {
exit('$uploadData is not a valid array!');
}
// etc.
return !in_array($uploadData['type'], $imageTypes);
希望这有帮助。