如何将CSV中的列按相反顺序输入php?
我想知道如何将CSV中的一个特定列(在我的例子中是第二列)以相反的顺序输入PHP?例如,如果我的文件是如何将CSV中的列按相反顺序输入php?,php,arrays,csv,Php,Arrays,Csv,我想知道如何将CSV中的一个特定列(在我的例子中是第二列)以相反的顺序输入PHP?例如,如果我的文件是 my, name, is, marwan here, goes, thing, some 1, 2, 3, 4 现在,我想要的php输出是 my - some - 1 name - thing - 2 is - goes - 3 marwan - here - 4 我现有的以正常顺序打印所有内容的PHP代码是 for($num = 1; $
my, name, is, marwan
here, goes, thing, some
1, 2, 3, 4
现在,我想要的php输出是
my - some - 1
name - thing - 2
is - goes - 3
marwan - here - 4
我现有的以正常顺序打印所有内容的PHP代码是
for($num = 1; $num <= 1; $num++) {
if(file_exists('1.csv')) {
$csvData = file_get_contents('1.csv');
$lines = explode(PHP_EOL, $csvData);
$array = array();
foreach ($lines as $line) { $array[] = str_getcsv($line); }
// count number of columns and minus 1 from it
$count = count($array[0]) - 1;
for ($x = 0; $x <= $count; $x++) {
$first_column = $array[0][$x];
$second_column = $array[1][$x];
$third_column = $array[2][$x];
// Now just outputting the values...
";
}
}
}
对于($num=1;$num嗯,您可以很容易地做到:
<?php
// defining a test array similar to yours
$records = array(
array(1, 'abc', '111'),
array(2, 'def', '222'),
array(3, 'ijk', '333'),
array(4, 'lmn', '444'),
array(5, 'opq', '555'),
);
// getting the column and reversing it
$col1rev = array_reverse(array_column($records, 1));
?>
您需要首先将CSV放入数组,然后反转第二行
完成后,对数组中的第一项进行foreach,并使用键输出其他值
$arr = explode("\n", $csv);
Foreach($arr as $key => &$line){
$line = explode(", ", $line);
If($key == 1) $line = array_reverse($line);
}
Unset($line);
Foreach($arr[0] as $key => $val){
Echo $val . "\t-\t" . $arr[1][$key] . "\t-\t" . $arr[2][$key] ."\n";
}
输出:
// The output here on SO looks odd but in reality it's tab separated
my - some - 1
name - thing - 2
is - goes - 3
marwan - here - 4
将它们放入数组中,然后使用array\u reverse函数$second\u column=$array[1][$count-$x];
@MariosNikolaou我该怎么做?我试图做的是$second\u column=array\u reverse($array[1][$x]);
但它告诉我“警告:array\u reverse()期望参数1是数组”.知道怎么回事吗?@MarwanAnsari是的,没错,“$array[1][$x]“”不是数组。将其转换为数组,然后将其添加到函数中如何处理特定的问题。他需要以相反的顺序获取一列…如果我正确理解了问题,此代码正是这样做的。我不理解否决票,但无论如何我尝试了help@Reflective我想从CSV文件中反转它。However有人已经回答了我的问题。非常感谢你的回答!你的值在$array中,所以只需将$records更改为$array,只需显示更一般的大小写,并对要反转的列使用1,2,3…等。我已经通过其他方法解决了问题。非常感谢你提供了你的方法!