$name = $_FILES['file']['name'];
$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
// Select file type
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Valid file extensions
$extensions_arr = array("jpg","jpeg","png","gif");
// Check extension
if( in_array($imageFileType,$extensions_arr) ){
// Insert record
$query = "insert into images(name) values('".$name."')";
mysqli_query($con,$query);
// Upload file
move_uploaded_file($_FILES['file']['tmp_name'],$target_dir.$name);
我知道列长度的使用不是行长度,而是2d数组的行长度和列数相同。
答案 0 :(得分:1)
你的逻辑不在这里,因为i
计入第一维,j
计入第二维:你真正想要的是
for(int i = 0; i < board.length; i++)
{
for(int j = 0; j < board[i].length; j++)
{
board[i][j] = '-';
}
}
这个问题当然是在以下几行:
for (int j = 0; j < board[j].length; j++)
您正在使用j
作为电路板阵列第一维的索引,但将其定义为最大长度等于第二维长度的值。这当然会让你有一个索引超出范围的机会,这正是这段代码所产生的。
尽管两个维度相同,但您遇到问题的原因是因为for循环退出的条件会重新评估每个循环。
逻辑是:
j < board[j].length
所以在7点你会得到:
7 < board[7].length
与:
相同7 < 8
很好,它通过了另一个循环,但是8发生了什么?
8 < board[8].length
8号板超出了板阵列的范围,所以它抛出异常,它根本无法评估它。变量i
但是永远不会达到8,它会在7处停止,因此在这种情况下你永远不会得到超出范围的索引。
如果您执行了以下操作,它将起作用(但不好的做法):
for(int j = 0; j < board[0].length; j++)