我正在尝试从 .CSV 获取数据,将其排序为数组(使用 PHP),在其中选择特定值,从该选择中创建一个新数组并将其编码为可与 ajax 一起使用的 json 对象。有了这段代码,我几乎可以得到我想要的。$CSV_url = '../fichier-csv/commande.csv'; // CSV file $csv["data"] = array_map('str_getcsv', file($CSV_url)); // to PHP arrayarray_shift($csv["data"]); // remove first line (headers)$jsonData = json_encode($csv); // to JsonCSV 文件每行包含大约 16 个类别的数据,但我在最终的 json 中只需要其中的 4 个。我坚持这个结果。如果我在 json_encode ( $csv) 之前打印,我会得到一个很好的数组,但是我很难选择想要的数据并用它制作新数组(这是我认为应该这样做的方式,但我是初学者,也许有一种更简单的方法可以做到这一点)。输出的 Json 也应该按照每个数组的 [0] 值的升序排序。这是我得到的数组的开始(其中 378 个要处理):Array ( [data] => Array ( [0] => Array ( [0] => 100120148 [1] => 1.0000 [2] => 7.4200 [3] => 2.4700 [4] => 4.9100 [5] => 0.0000 [6] => 14.8000 [7] => 0.3000 [8] => marie [9] => jardin [10] => 40 rue mazé [11] => 87400 [12] => 066825197 [13] => magicayllo64@hotmail.fr [14] => 1 [15] => magicayllo64@hotmail.fr ) [1] => Array ( [0] => 100120162 [1] => 1.0000 [2] => 45.7500 [3] => 10.8000 [4] => 8.2500 [5] => 0.0000 [6] => 64.8000 [7] => 2.0000 [8] => __ [9] => Lucien fizon [10] => 56 impasse pazarre [11] => 25000 [12] => 0649851473 [13] => 144f21ds8u4u6f5f@shopify.com [14] => 4 [15] => 144f21ds8u4u6f5f@shopify.com )如何获取每个子数组的值 0、8、9 和 12 并用它创建一个新数组,以便我可以将这个所需的数组编码为 Json ?
2 回答
慕容森
TA贡献1853条经验 获得超18个赞
在您读取文件时处理它可能会更好,使用fopen()并且fgetcsv()您可以只提取您想要的项目到结果而不是全部存储。
$CSV_url = '../fichier-csv/commande.csv';
$fh = fopen($CSV_url, "r");
$csv = [ "data" => [] ];
fgets($fh); // Ignore header
while ( $row = fgetcsv($fh) ) {
$csv["data"][] = [$row[0], $row[8], $row[9], $row[12]];
}
fclose($fh);
$jsonData = json_encode($csv);
忽然笑
TA贡献1806条经验 获得超5个赞
您可以array_map再次使用以仅选择每行中所需的列:
$csv["data"] = array_map(fn($row) => [$row[0], $row[8], $row[9], $row[12]], $csv["data"]);
如果您还没有使用 PHP 7.4,则需要使用传统语法而不是箭头函数:
$csv["data"] = array_map(function(row) {
return [$row[0], $row[8], $row[9], $row[12]];
}, $csv["data"];
- 2 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消