Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php脚本,用于将csv文件读取为json,在项目之前带有静态头_Php_Json_Csv - Fatal编程技术网

php脚本,用于将csv文件读取为json,在项目之前带有静态头

php脚本,用于将csv文件读取为json,在项目之前带有静态头,php,json,csv,Php,Json,Csv,这是我的CSV数据 舒勒奈 舒莱德 系统传输 交易日期 sttId 性别 mzimu 01-022-1 20-007440 18/05/2021 12 F mzimu 01-022-1 20-007441 18/05/2021 13 M mzimu 01-022-1 20-007442 19/05/2021 14 M 根据您的评论,如果我理解正确,shulename将始终是mzimu,shuleid将始终是01-022-1 因此,从您编写的代码继续创建所需的格式是 if($handle=fop

这是我的CSV数据

舒勒奈 舒莱德 系统传输 交易日期 sttId 性别 mzimu 01-022-1 20-007440 18/05/2021 12 F mzimu 01-022-1 20-007441 18/05/2021 13 M mzimu 01-022-1 20-007442 19/05/2021 14 M
根据您的评论,如果我理解正确,
shulename
将始终是
mzimu
shuleid
将始终是
01-022-1

因此,从您编写的代码继续创建所需的格式是


if($handle=fopen('revenue.csv','r'))==false){
模具(“打开文件时出错”);
}
$headers=fgetcsv($handle,1024,',');
$complete=array();
而($row=fgetcsv($handle,1024,',')){
$complete[]=array_combine($headers,$row);
}
fclose($handle);
//我们静态地分配了shulename和shuleid
//因为你说过他们永远都是一样的
$requiredFormat=['shulename'=>'mzimu',
“shuleid”=>“01-022-1”];
foreach($项目完成){
##注意这里的情况。问题中的csv是ucfirst,要求的格式是小写
##php索引区分大小写
未结算($item['Shulename']);
未结算($item['Shuleid']);
$requiredFormat['items'][]=$item;
}
echo json_编码($requiredFormat);

您可以在此处看到它的工作演示:

我伪造了csv流,以展示如何将其与
fgetcsv

$csv = "Shulename,Shuleid,systemTransId,transactionDate,sttId,gender
mzimu,01-022-1,20-007440,18/05/2021,12,F
mzimu,01-022-1,20-007441,18/05/2021,13,M
mzimu,01-022-1,20-007442,19/05/2021,14,M";

//$file = fopen("YOURFILE.csv","r");

$file     = fopen('data://text/plain,' . $csv,'r');
$line = 0 ;
$keys = [];
while (($data = fgetcsv($file)) !== FALSE)
{
   if ($line==0) {
       // set up the array
       foreach ($data as $d) $keys[]=strtolower($d);
       
       $output = array(
           $keys[0] => "", 
           $keys[1] => "",
           "items" => array()
           );
   } else {
        if ($line==1) {
            $output[$keys[0]] = $data[0];
            $output[$keys[1]] = $data[1];
        }
        $tmp = [];
        for ($x=2; $x<count($keys); $x++) {
            $tmp[$keys[$x]] = $data[$x];
        }   
        $output['items'][]=$tmp;
   }
   $line++;
}

$output = json_encode($output, JSON_PRETTY_PRINT);


die("<pre>".print_r($output,1));
$csv=“Shulename,Shuleid,systemTransId,transactionDate,sttId,性别
mzimu,01-022-1,20-007440,18/05/2021,12,F
mzimu,01-022-1,20-007441,18/05/2021,13,M
mzimu,01-022-1,20-007442,19/05/2021,14,M”;
//$file=fopen(“YOURFILE.csv”、“r”);
$file=fopen('data://text/plain,“.$csv,'r');
$line=0;
$keys=[];
while(($data=fgetcsv($file))!==FALSE)
{
如果($line==0){
//设置阵列
foreach($d数据)$keys[]=strtolower($d);
$output=array(
$keys[0]=>“”,
$keys[1]=>“”,
“items”=>array()
);
}否则{
如果($line==1){
$output[$keys[0]]=$data[0];
$output[$keys[1]]=$data[1];
}
$tmp=[];

对于($x=2;$XD)您是否有多个
shulename
或始终是
mzimu
?您迄今为止尝试了什么?您是否能够将csv读入php?问题是什么?是的,shulename和shuleid将永远不会更改我能够读取csv,但安排不是我想要的静态标题(shuleid,shulename)他们加入了data@Kinglish我想要一个可以从csv文件生成json数据的脚本,但在这种格式下它可以工作,谢谢