PHP将Javascript数组拆分为多行并写入CSV

时间:2018-10-11 16:58:25

标签: php arrays

我正在将一个大型数组发布到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

1 个答案:

答案 0 :(得分:3)

Array Chunk返回多维数组。您正在将该数组写入文件。

您必须要做的是:

$file = fopen("files/test.csv",'w');

foreach ($iArray as $row) {
    fputcsv($file, $row); 
}

请记住,fputcsv具有默认的定界符','更多信息http://php.net/fputcsv