Php 使用for循环根据用户输入递增数组中的单个值
我不完全确定如何做到这一点,我一直在努力解决这个问题。我希望能够在用户每次按下submit按钮时增加数组中的单个值,该按钮将保存到csv文件中。但是,每次我尝试时,数字都保持在1 我能得到一些指导吗?以下是我所拥有的: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
<?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号。