Php 使用for循环根据用户输入递增数组中的单个值

Php 使用for循环根据用户输入递增数组中的单个值,php,for-loop,Php,For Loop,我不完全确定如何做到这一点,我一直在努力解决这个问题。我希望能够在用户每次按下submit按钮时增加数组中的单个值,该按钮将保存到csv文件中。但是,每次我尝试时,数字都保持在1 我能得到一些指导吗?以下是我所拥有的: <?php $name = $_POST["Name"]; $grade = $_POST["Grade"]; $handle = fopen("users.csv", "a+t"); if (!$handle) { die("error, can't open

我不完全确定如何做到这一点,我一直在努力解决这个问题。我希望能够在用户每次按下submit按钮时增加数组中的单个值,该按钮将保存到csv文件中。但是,每次我尝试时,数字都保持在1

我能得到一些指导吗?以下是我所拥有的:

<?php $name = $_POST["Name"];
$grade = $_POST["Grade"];
$handle = fopen("users.csv", "a+t");

if (!$handle) {
    die("error, can't open file!");
}
if (!flock($handle, LOCK_EX)) {
    die("lock error!");
}
$count = 10;
for ($i = 0; $i < count($count); $i++) {
    $count++; 
    fputcsv($handle, array($i++, $name, $grade)); }
fseek($handle, 0);

while (!feof($handle)) { 

$record = fgetcsv($handle);
?>
<div>
    ID Number: <?php echo $record[0]; ?><br/>
    Name: <?php echo $record[1]; ?><br/>
    Grade: <?php echo $record[2]; ?><br/>
</div> }

基本策略是从CSV文件中读取现有记录,然后使用该信息生成新ID。新ID可以基于以下任一项:

  • 记录的总数,或
  • 存储的最大当前ID
  • 在您现有的代码中,
    for
    循环似乎没有必要,因为它是人工生成一个数字的-该数字将始终是
    0
    ,因为
    count($count)
    始终返回
    1

    我已经清理了代码并添加了一些注释:

    $name = $_POST["Name"];
    $grade = $_POST["Grade"];
    $handle = fopen("users.csv", "a+t");
    
    if (!$handle) die("error, can't open file!");
    if (!flock($handle, LOCK_EX)) die("lock error!");
    
    $records = array();
    while (!feof($handle))
        $records[] = fgetcsv($handle);
    
    // 1. Use this to find the number of elements
    $count = count($records);
    
    // 2. Use this to find the largest current ID
    $max = $count > 0 ? max(array_column($records, 0)) : 0;
    
    // Our new ID should be based on (1) or (2) above
    $newId = $max + 1;
    
    fputcsv($handle, array($newId, $name, $grade));
    
    fseek($handle, 0);
    while (!feof($handle)) { 
        $record = fgetcsv($handle);
        // ... print out your <div> here ...
    }
    
    $name=$\u POST[“name”];
    $grade=$_POST[“grade”];
    $handle=fopen(“users.csv”,“a+t”);
    如果(!$handle)死亡(“错误,无法打开文件!”);
    如果(!flock($handle,LOCK_EX))死亡(“锁定错误!”);
    $records=array();
    而(!feof($handle))
    $records[]=fgetcsv($handle);
    // 1. 使用此选项可以查找元素的数量
    $count=计数($records);
    // 2. 使用此项查找最大的当前ID
    $max=$count>0?最大值(数组_列($records,0)):0;
    //我们的新ID应基于上述(1)或(2)项
    $newId=$max+1;
    fputcsv($handle,array($newId,$name,$grade));
    fseek($handle,0);
    而(!feof($handle)){
    $record=fgetcsv($handle);
    //…在这里打印您的。。。
    }
    
    您能分享一下如何读取csv文件的值吗?我编辑了代码。谢谢。所以你要增加的是ID号?是的,每次用户输入姓名和等级,我都希望这些信息和ID号保存到csv文件中,每个唯一的条目都有一个增加的ID号。