Php 计算具有相同第一个字符的文件行数
在逗号分隔的csv文件中,我只想计算第一个数字相同的行数 下面是示例数据,我想得到以2(2行)开头的行数,以及以4(3行)开头的行数。这只是一个例子,数字是随机的Php 计算具有相同第一个字符的文件行数,php,Php,在逗号分隔的csv文件中,我只想计算第一个数字相同的行数 下面是示例数据,我想得到以2(2行)开头的行数,以及以4(3行)开头的行数。这只是一个例子,数字是随机的 2,0,0 2,1,0 4,0,0 4,3,0 4,4,0 我正在尝试以下代码,我只能计算文件中的所有行,但不知道如何仅计算第一个数字相同的行 $i = 0; while ($i < 5) { //fixed number of times $i++; $rows = 0; $fp =
2,0,0
2,1,0
4,0,0
4,3,0
4,4,0
我正在尝试以下代码,我只能计算文件中的所有行,但不知道如何仅计算第一个数字相同的行
$i = 0;
while ($i < 5) { //fixed number of times
$i++;
$rows = 0;
$fp = fopen("test.csv", "r");
while (fgetcsv($fp)) { //don't want all rows
$rows++;
}
fclose($fp);
echo $rows;
}
$i=0;
而($i<5){//固定次数
$i++;
$rows=0;
$fp=fopen(“test.csv”、“r”);
而(fgetcsv($fp)){//不需要所有行
$rows++;
}
fclose($fp);
echo$行;
}
编辑:
对不起,我忘了提到上面文件中的数字是随机的,它们并不总是2或4。假设您知道如何获取文本文件的内容,类似这样的方法应该可以工作:
$ar = explode("\n",$txtfileContents);
$counts = array();
foreach($ar as $row){
$counts[$row[0]]++;
}
$counts
现在包含所有第一个字符的数组以及它们出现的次数。现在,您只需按如下方式访问它们:
echo "'2' appeared ".$count['2']." times<br/>";
echo "'4' appeared ".$count['4']." times";
(或者在此处尝试,这可能比爆炸更可靠)
循环通过它:
foreach($ar as $row){
}
然后检查循环中的第一个字符,并分别计数每个字符:
$counts[$row[0]]++;
假设您知道如何获取文本文件的内容,类似这样的方法应该可以工作:
$ar = explode("\n",$txtfileContents);
$counts = array();
foreach($ar as $row){
$counts[$row[0]]++;
}
$counts
现在包含所有第一个字符的数组以及它们出现的次数。现在,您只需按如下方式访问它们:
echo "'2' appeared ".$count['2']." times<br/>";
echo "'4' appeared ".$count['4']." times";
(或者在此处尝试,这可能比爆炸更可靠)
循环通过它:
foreach($ar as $row){
}
然后检查循环中的第一个字符,并分别计数每个字符:
$counts[$row[0]]++;
假设您知道如何获取文本文件的内容,类似这样的方法应该可以工作:
$ar = explode("\n",$txtfileContents);
$counts = array();
foreach($ar as $row){
$counts[$row[0]]++;
}
$counts
现在包含所有第一个字符的数组以及它们出现的次数。现在,您只需按如下方式访问它们:
echo "'2' appeared ".$count['2']." times<br/>";
echo "'4' appeared ".$count['4']." times";
(或者在此处尝试,这可能比爆炸更可靠)
循环通过它:
foreach($ar as $row){
}
然后检查循环中的第一个字符,并分别计数每个字符:
$counts[$row[0]]++;
假设您知道如何获取文本文件的内容,类似这样的方法应该可以工作:
$ar = explode("\n",$txtfileContents);
$counts = array();
foreach($ar as $row){
$counts[$row[0]]++;
}
$counts
现在包含所有第一个字符的数组以及它们出现的次数。现在,您只需按如下方式访问它们:
echo "'2' appeared ".$count['2']." times<br/>";
echo "'4' appeared ".$count['4']." times";
(或者在此处尝试,这可能比爆炸更可靠)
循环通过它:
foreach($ar as $row){
}
然后检查循环中的第一个字符,并分别计数每个字符:
$counts[$row[0]]++;
您可能可以尝试以下方式:
$i = 0;
while ($i < 5) { //fixed number of times
$i++;
$rows = array();
$fp = fopen("test.csv", "r");
while ($data = fgetcsv($fp)) {
$first = $data[0];
if(isset($rows[$first]) {
$rows[$first] += 1;
} else {
$rows[$first] = 1;
}
}
fclose($fp);
print_r($rows);
}
$i=0;
而($i<5){//固定次数
$i++;
$rows=array();
$fp=fopen(“test.csv”、“r”);
而($data=fgetcsv($fp)){
$first=$data[0];
如果(isset($rows[$first]){
$rows[$first]+=1;
}否则{
$rows[$first]=1;
}
}
fclose($fp);
打印(行);
}
我没有测试我的代码,因此它可能包含错误
执行后,$rows
将包含一个关联数组,其形式为'first number'=>'count'
然而,我不明白的是,为什么要做五次,为什么不使用
for
循环而不是while
$i = 0;
while ($i < 5) { //fixed number of times
$i++;
$rows = array();
$fp = fopen("test.csv", "r");
while ($data = fgetcsv($fp)) {
$first = $data[0];
if(isset($rows[$first]) {
$rows[$first] += 1;
} else {
$rows[$first] = 1;
}
}
fclose($fp);
print_r($rows);
}
$i=0;
而($i<5){//固定次数
$i++;
$rows=array();
$fp=fopen(“test.csv”、“r”);
而($data=fgetcsv($fp)){
$first=$data[0];
如果(isset($rows[$first]){
$rows[$first]+=1;
}否则{
$rows[$first]=1;
}
}
fclose($fp);
打印(行);
}
我没有测试我的代码,因此它可能包含错误
执行后,$rows
将包含一个关联数组,其形式为'first number'=>'count'
然而,我不明白的是,为什么要做五次,为什么不使用
for
循环而不是while
$i = 0;
while ($i < 5) { //fixed number of times
$i++;
$rows = array();
$fp = fopen("test.csv", "r");
while ($data = fgetcsv($fp)) {
$first = $data[0];
if(isset($rows[$first]) {
$rows[$first] += 1;
} else {
$rows[$first] = 1;
}
}
fclose($fp);
print_r($rows);
}
$i=0;
而($i<5){//固定次数
$i++;
$rows=array();
$fp=fopen(“test.csv”、“r”);
而($data=fgetcsv($fp)){
$first=$data[0];
如果(isset($rows[$first]){
$rows[$first]+=1;
}否则{
$rows[$first]=1;
}
}
fclose($fp);
打印(行);
}
我没有测试我的代码,因此它可能包含错误
执行后,$rows
将包含一个关联数组,其形式为'first number'=>'count'
然而,我不明白的是,为什么要做五次,为什么不使用
for
循环而不是while
$i = 0;
while ($i < 5) { //fixed number of times
$i++;
$rows = array();
$fp = fopen("test.csv", "r");
while ($data = fgetcsv($fp)) {
$first = $data[0];
if(isset($rows[$first]) {
$rows[$first] += 1;
} else {
$rows[$first] = 1;
}
}
fclose($fp);
print_r($rows);
}
$i=0;
而($i<5){//固定次数
$i++;
$rows=array();
$fp=fopen(“test.csv”、“r”);
而($data=fgetcsv($fp)){
$first=$data[0];
如果(isset($rows[$first]){
$rows[$first]+=1;
}否则{
$rows[$first]=1;
}
}
fclose($fp);
打印(行);
}
我没有测试我的代码,因此它可能包含错误
执行后,$rows
将包含一个关联数组,其形式为'first number'=>'count'
但是,我不明白的是,为什么要做五次,为什么不使用
for
循环而不是while
?您需要一个数组来获取统计信息
$i = 0;
$agg = []; // to count stats
while ($i < 5) {
$i++;
$rows = 0;
$fp = fopen("test.csv", "r");
while ($line = fgetcsv($fp)) {
$number = $line[0]; // get first number
if(isset($agg[$number])){ // if there is the number in stats
$agg[$number]++; // count new one
} else {
$agg[$number] = 1; // mark as found one
}
}
fclose($fp);
print_r($agg);
}
$i=0;
$agg=[];//统计统计数据
而($i<5){