Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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
如何将CSV中的列按相反顺序输入php?_Php_Arrays_Csv - Fatal编程技术网

如何将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; $

我想知道如何将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; $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…等。我已经通过其他方法解决了问题。非常感谢你提供了你的方法!