这咬了我好几次了,我不知道这是错误还是功能。
ini_set('max_execution_time', 1000);
include "config.php";
include 'vendor/mantas-done/subtitles/src/Subtitles.php';
use \Done\Subtitles\Subtitles;
$subtitles = new Subtitles();
$data = $_POST['data'];
$file_name = $_POST['file'];
$subtitle = $_POST['subtitle'];
$language = $_POST['language'];
$author = $_POST['author'];
$ip= $_SERVER['REMOTE_ADDR'];
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) {
$ip = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']));
}
$data =json_decode($data, true);
foreach($data as $obj){
$subtitles->add($obj['start'], $obj['end'],$obj['text']);
$subtitles->save($file_name);
}
$ext = pathinfo($file_name, PATHINFO_EXTENSION);
$new_file_name_ext = time()."_".$subtitle."_".$language.".".$ext;
$new_file_name = time()."_".$subtitle."_".$language;
$query1 = "INSERT INTO movies (name , author, language, filename, user_ip)
VALUES ('$subtitle','$author', '$language', '$new_file_name', '$ip')";
if(mysqli_query($conn, $query1)){
copy("$file_name", "uploads_iota/$new_file_name_ext");
//new GoodZipArchive('uploads_iota/$new_file_name', 'upload_iota/output_zip_file.zip') ;
$data1 = "Successful, File saved to database.";
$zip = new ZipArchive;
$new_zip = time()."_".$subtitle."_".$language.".zip";
if ($zip->open("uploads_zip/$new_zip", ZipArchive::CREATE) === TRUE)
{
$zip->addFile("uploads_iota/$new_file_name_ext", "$new_file_name_ext");
$zip->close();
}
} else{
$data1 = mysqli_error();
}
echo $data1; ?>
看来我可以用任何一种方式索引nums = np.arange(10)
indx1 = np.array([2,4,6,8])
indx2 = np.array([0,3])
nums
输出nums[indx1][indx2], nums[indx1[indx2]]
如果我想重新分配这些值,这是行不通的
(array([2, 8]), array([2, 8]))
输出nums[indx1][indx2] = 20
nums
但这可以按预期工作:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
输出nums[indx1[indx2]] = 20
nums
为什么我必须嵌套索引数组而不是用菊花链将它们嵌套?
答案 0 :(得分:0)
这就是我的想法。
尽管以上两种方法返回的结果相同,但是在执行赋值操作时它们是不同的。
nums[indx1][indx2]
可以分为两部分temp = nums[indx]
和temp[indx2]
。
步骤1。temp = nums[indx1]
切片将创建一个 new 数组返回[2 4 6 8]
步骤2。temp[indx2]
将返回[2,8]
因此,如果您尝试nums[indx1][indx2] = 20
,则相当于
temp = nums[indx1]
print(temp)
temp[indx2] = 20
print(temp)
这不会影响原始数组nums
。array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
第二种方法为什么起作用?
indx1[indx2]
返回[2, 8]
nums[[2,8]] = 20
将给您array([ 0, 1, 20, 3, 4, 5, 6, 7, 20, 9])
。之所以有效,是因为您将值分配给了原始数组nums
。
总体而言,第一个无法访问nums
的内存,但是第二个可以访问。