0
<?php

// Open the file
$filename = 'pvemail.txt';
$fp = fopen($filename, 'r'); 
// Add each line to an array
if ($fp) {
   $array = explode("\n", fread($fp, filesize($filename)));
}
//print_r ($array);
for ($c = 0; $c < count($array); $c++){
    $cell = explode(",", $array[$c]);
//print_r ($cell);

if ($cell[3] == 'ACTIVE')
    {
    echo $cell[2].' - '.$cell[12].' '.$cell[11];
    echo '<br/>';
    }
}
?>

此代码获取一个 CSV 文件,读取它,第一个 if 语句将文件的每一行分解为自己的数组。for 循环将这些行中的每一行分解为由 20 个 key=>value 对组成的数组。然后第二个 if 语句遍历这些对以提取我想要的三对并将其打印到屏幕上。
我遇到的问题是我现在希望数据按字母顺序排序,到目前为止,无论我使用什么 sort() 函数,或者我把它放在哪里,都没有任何反应。
我尝试sort($cell)在 for 循环和第二个 if 循环之间使用,但没有发生任何事情,我尝试在内部使用相同的代码,然后 if 循环并没有发生任何事情,我尝试将 $cell 数组移动到另一个数组并对其进行排序, 我试过了ksort($cell,asort($cell),我什至尝试将数组传递给 JavaScript 并以这种方式对其进行排序,但没有任何反应!
我开始在这里拔头发,有什么明显的我遗漏或不这样做会阻止排序工作吗?

4

1 回答 1

0

排序没有意义,$cell因为它代表一行,而不是整个文件。

但是让我们从简化代码开始。此行将单独加载您的数据并将其转换为多维数组:

$data = array_map('str_getcsv', file('pvemail.txt'));

然后,您可以使用usort回调函数根据您想要的任何列对这个行数组进行排序(“按字母顺序”不是很清楚)。这个问题显示了如何做到这一点(披露:我也有答案)。

假设您要根据第一列进行排序,您可能会这样做

usort($data, function($a, $b) { return strcmp($a[0], $b[0]); });

应该就是这样,然后你就可以用它foreach来打印出结果了。

于 2013-09-13T15:34:55.220 回答