我正在将一个大型数组发布到PHP文件。数组如下所示:
var arr = ["Filename", "Annotationtag", "Upper left corner X", "Upper left corner Y", "Lower right corner X", "Lower right corner Y", "locationName",
"/var/www/html/projects/MasterImages/95-20180527-190018-205342-00002.jpg", "TShirtBackSide_Pepsi", 435, 123, 504, 151, "TShirtBackSide"];
一旦PHP脚本接收到该数组,我想在第7个元素处拆分该数组,将其余值移动到后续行中,最后将拆分后的数组写入一个csv文件,其中每行包含7列数据。
一个简短的html文件如下:
arraypost.php
<html>
<head>
<title>Test</title>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script type="text/javascript">
function pusharr() {
var arr = ["Filename", "Annotationtag", "Upper left corner X", "Upper left corner Y", "Lower right corner X", "Lower right corner Y", "locationName",
"/var/www/html/projects/MasterImages/95-20180527-190018-205342-00002.jpg", "TShirtBackSide_Pepsi", 435, 123, 504, 151, "TShirtBackSide"];
//Option1: var newarr = arr.toString();
//Option2: var newarr = JSON.stringify();
console.log(arr);
$.post("getAnnotationsForTF.php", { 'data' : arr }, function(output){
console.log(output);
});
}
</script>
</head>
<body>
<button onclick="pusharr()">Click</button>
</body>
</html>
getAnnotationsForTF.php
<?php
$lsData = isset($_POST['data'])?$_POST['data']:'';
$inputArray = explode(',',$lsData);
$cnt = count($inputArray);
$interval = $cnt/7;
$iArray = [];
$iArray = array_chunk($inputArray, $interval);
if(file_put_contents("files/test.csv", $iArray)) {
echo "Working";
} else {
echo "Not Working";
}
?>
在创建csv文件时,我在csv文件中看到的只是:
ArrayArrayArrayArrayArrayArrayArrayArray
我尝试了各种选择。但无法通过。
csvfile的期望输出如下:
Filename, Annotationtag, Upper left corner X, Upper left corner Y, Lower right corner X, Lower right corner Y, locationName
/var/www/html/projects/MasterImages/95-20180527-190018-205342-00002.jpg, TShirtBackSide_Pepsi, 435, 123, 504, 151, TShirtBackSide
答案 0 :(得分:3)
Array Chunk返回多维数组。您正在将该数组写入文件。
您必须要做的是:
$file = fopen("files/test.csv",'w');
foreach ($iArray as $row) {
fputcsv($file, $row);
}
请记住,fputcsv具有默认的定界符','更多信息http://php.net/fputcsv