php - 附加到带有变量的关联数组如何工作
问题描述
我正在做这个练习来理解 php 的概念和语法。我得到的错误是数组没有被文本框中的新条目附加,如果我对值进行硬编码,程序可以正常工作并打印数组价值观。但是只要我把变量放在它只是为 [0] 索引分配一个新值。这是代码:
<label for="Name">Student Name:
<input type="text" name="StdName" placeholder="Your name">
</label>
<label for="Name">Grade:
<input type="text" name="StdGrade" placeholder="Your Grade">
</label>
<input type="submit" name="submit"value="submit">
</form>
<?php
// Associative array new
$studentName = $_POST['StdName'];
$studentGrade = $_POST['StdGrade'];
$classGrades = Array();
$classGrades['name'][] = $studentName;
$classGrades['grade'][] = $studentGrade;
echo "<br> <br> Your name is: $studentName and your grade is: $studentGrade <br> <br>";
foreach($classGrades as $key=>$value){
echo join($value,' <br>');
}
?>```
解决方案
你的循环是错误的。你有单独的name
和grade
数组,所以这就是你需要循环的内容:
foreach ($classGrades['name'] as $index => $name) {
$grade = $classGrades['name'][$index];
echo "$name<br>$grade<br>";
}
但是,如果您不创建单独的数组并将名称和等级一起保存在一个关联数组中会更好:
$classGrades[] = ['name' => $studentName, 'grade' => $studentGrade];
然后你的循环看起来像:
foreach ($classGrades as $grade) {
echo $grade['name'] . "<br>" . $grade['grade'] . "<br>";
}
如果您希望变量在表单提交之间保持不变,则需要使用会话变量。
放
<?php
session_start();
在脚本的开头。然后使用$_SESSION['classGrades']
代替$classGrades
,并像这样初始化它:
if (!isset($_SESSION['classGrades'])) {
$_SESSION['classGrades'] = array();
}
推荐阅读
- reactjs - 从 ReactJs 中的 api 下载文件
- google-people-api - 如何在 Google People 更新联系期间提供 updateMask?
- ios - React-Native-Firebase:当应用程序未安装在 iOS 设备上时,应用程序商店未打开
- c - 键盘功能返回错误的数字
- sql - BigQuery 中的 SQL WITHIN GROUP 相当于什么?
- django - 我们可以使用 queryset.first() 代替捕获异常吗?
- c++ - 如何处理错误:使用已删除的函数 c++?
- php - 为 WordPress 添加简码
- android - Android 6 上带有矢量可绘制对象的背景崩溃
- go - gorm 替换关联做许多更新查询