<?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 =&gt;值对组成的数组。然后第二个if语句循环遍历这些对以提取并向屏幕打印我想要的三对。
我遇到的问题是我现在希望数据按字母顺序排序,到目前为止无论我使用什么sort()函数,或者我把它放在哪里,都没有任何反应。
我尝试在for循环和第二个if循环之间使用sort($cell)
但没有发生任何事情,我尝试在内部使用相同的代码,之后,if循环并没有发生任何事情,我尝试将$ cell数组移动到另一个数组和排序,我已经尝试ksort($cell
,asort($cell)
,我甚至尝试将数组传递给JavaScript并按照这种方式排序,没有任何事情发生!
我开始把头发拉到这里,是否有任何明显的我缺少或没有做到这一点正在停止排序工作?
答案 0 :(得分:0)
排序$cell
没有意义,因为它代表一行,而不是整个文件。
但我们首先要简化代码。该行将单独加载您的数据并将其转换为多维数组:
$data = array_map('str_getcsv', file('pvemail.txt'));
然后,您可以使用带有回调函数的usort
根据您想要的任何列对此行数组进行排序(“按字母顺序”不是很清楚)。 This question显示了如何做到这一点(披露:我也有答案)。
假设您要根据第一列进行排序,您可以
usort($data, function($a, $b) { return strcmp($a[0], $b[0]); });
应该是这样,然后您可以使用foreach
打印出结果。