gpt4 book ai didi

php 仅从 csv 文件中选择第一列、中间列和最后一列

转载 作者:可可西里 更新时间:2023-11-01 00:33:37 27 4
gpt4 key购买 nike

我有一个已上传的 csv 文件,我需要确定 csv 文件中有多少条目,并将第一列、中间列和最后一列格式化为具有 $header=>$value 对的关联数组。我有将整个 csv 格式化为数组的代码

function csv_to_array($filename='', $delimiter=',') {
if(!file_exists($filename) || !is_readable($filename)){
return FALSE;
}

$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE) {
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
if(!$header) {
$header = $row;
}else{
$data[] = array_combine($header, $row);
}
}

fclose($handle);
}

return $data;
}

但是,就确定执行此操作的方法而言,我仍然感到困惑。任何帮助,将不胜感激。我想可能的一件事是使用上面的这个函数来获取数组,然后编写一些其他函数来只获取这个数组的开始中间和结尾并转储其余部分(但仍然需要知道如何做到这一点)至于确定开头中间结尾

最佳答案

我会在您阅读文件时处理它。

// how many total columns
$total = count( $row );

// get the halfway point (and round up if a decimal)
$middle = ceil( $total/2 );

// Form a new row using the first (0), last ($total-1) and middle ($middle)
$new_row = array( $row[0], $row[ $middle ], $row[ $total-1 ] );

嵌入到您的代码中:

function csv_to_array($filename='', $delimiter=',') {
if(!file_exists($filename) || !is_readable($filename)){
return FALSE;
}

$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE) {
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {

$total = count( $row );
$middle = ceil( $total/2 );
$new_row = array( $row[0], $row[ $middle ], $row[ $total-1 ] );

if(!$header) {
$header = $new_row;
}else{
$data[] = array_combine($header, $new_row);
}
}

fclose($handle);
}

return $data;
}

您可以通过假设整个文件中的每一行都具有相同的列数来减轻一些处理能力。如果是这样,您只需计算一次,如下所示:

function csv_to_array($filename='', $delimiter=',') {
if(!file_exists($filename) || !is_readable($filename)){
return FALSE;
}

$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE) {
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {

if ( !$total ){ // Verify if we have the total yet, and if not:
$total = count( $row );
$middle = ceil( $total/2 );
}
$new_row = array( $row[0], $row[ $middle ], $row[ $total-1 ] );

if(!$header) {
$header = $new_row;
}else{
$data[] = array_combine($header, $new_row);
}
}

fclose($handle);
}

return $data;
}

关于php 仅从 csv 文件中选择第一列、中间列和最后一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16322185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com