php中的三维数组与单维数组

php中的三维数组与单维数组,php,html,multidimensional-array,Php,Html,Multidimensional Array,对于我的一个项目,需要设计学生个人的分数。共有4个班(第7、第8、第9和第10班),每个班约有25名学生(他们的卷号为:1001100210031004…),分数依次为:物理、化学、数学和英语 上述标记的三维阵列: $marks = array( "7" => array( "1001" => array(90, 95, 98, 78), "1002" => array(91, 90, 93, 77), "1003" =&

对于我的一个项目,需要设计学生个人的分数。共有4个班(第7、第8、第9和第10班),每个班约有25名学生(他们的卷号为:1001100210031004…),分数依次为:物理、化学、数学和英语

上述标记的三维阵列:

$marks = array(
    "7" => array(
        "1001" => array(90, 95, 98, 78),
        "1002" => array(91, 90, 93, 77),
        "1003" => array(88, 83, 90, 68),
        "1004" => array(90, 91, 90, 80)
        ),
    "8" => array(
        "1001" => array(88, 90, 95, 77),
        "1002" => array(91, 92, 94, 75),
        "1003" => array(90, 90, 95, 66),
        "1004" => array(90, 92, 88, 70)
        ),
     ..................................
     ..................................
    "10" => array(
        "1001" => array(81, 91, 95, 79),
        "1002" => array(92, 92, 95, 85),
        "1003" => array(91, 90, 91, 62),
        "1004" => array(88, 90, 89, 78)
        )
    );
我没有将这些细节放在三维数组中,而是将它们放在一维数组中,如:

//class, Roll_no, physics, chemistry, maths, English
    $marks = array(7, 1001, 90, 95, 98, 78),
                  (7, 1002, 91, 90, 93, 77),
                  (7, 1003, 88, 83, 90, 68),
                  (7, 1004, 90, 91, 90, 80), 
                  (8, 1001, 88, 90, 95, 77),
                  (8, 1002, 91, 92, 94, 75),
                  (8, 1003, 90, 90, 95, 66),
                  (8, 1004, 90, 92, 88, 70)
     );
我的HTML代码是:

<form method="post" name="data" action="mark.php">
Enter class:  
  <select name="class">
      <option value="7"> 7th Class 
      <option value="8"> 8th Class
      <option value="9"> 9th Class
      <option value="10"> 10th Class
  </select>
<br> Enter Roll no: 
  <select name="roll_no">
      <option value="1001"> Roll no:1001
      <option value="1002"> Roll no:1002
      <option value="1003"> Roll no:1003
      <option value="1004"> Roll no:1004
  </select>
<br><input type="submit" value="submit">
 </form>

输入类:
七等
八等
九等舱
十等

输入卷号: 卷号:1001 卷号:1002 卷号:1003 卷号:1004
我的PHP代码是:

if ($_POST) {
    $class = $_POST['class'];
    $roll_no = $_POST['roll_no'];

    $ans1 = $marks[$class][$roll_no][2]; // marks in Physics
    $ans2 = $marks[$class][$roll_no][3]; // marks in chemistry
    $ans3 = $marks[$class][$roll_no][4]; // marks in maths
    $ans4 = $marks[$class][$roll_no][5]; // marks in english

    echo "The marks scored in Physics by Roll no: $roll_no (Class: $class th): $ans1 <br>";
    echo "The marks scored in Chemistry by Roll no: $roll_no (Class: $class th): $ans2 <br>";
    echo "The marks scored in Maths  by Roll no: $roll_no (Class: $class th): $ans3 <br>";
    echo "The marks scored in English by Roll no: $roll_no (Class: $class th): $ans4 <br>";
}
if($\u POST){
$class=$_POST['class'];
$roll\u no=$\u POST['roll\u no'];
$ans1=$marks[$class][$roll_no][2];//物理成绩
$ans2=$marks[$class][$roll_no][3];//化学成绩
$ans3=$marks[$class][$roll_no][4];//数学成绩
$ans4=$marks[$class][$roll_no][5];//英语分数
echo“物理成绩的卷号:$Roll_no(班级:$th班级):$ans1
”; echo“化学成绩由卷号获得:$Roll_no(班级:$th班级):$ans2
”; echo“第卷数学分数:$Roll_no(班级:$th班级):$ans3
”; echo“卷号:$Roll_no(班级:$th班级):$ans4的英语分数”; }

但它显示出错误。有人能帮我更正代码吗?

如果你喜欢循环,试试这个代码

$count = sizeof($marks);
for($i=0;$i<$count;$i++)
{
    if($marks[$i][0] == $class && $marks[$i][1] == $$roll_no)
{
   echo 'Yes';
}
}
$count=sizeof($marks);

对于($i=0;$iI)来说,我认为在三维数组中添加比在一维数组中添加更好。在一维数组中,您必须始终在整个数组中循环。如果在三维数组中,您可以访问诸如
#marks[“class”]['serial\u no'][2]
之类的数据。您的代码是错误的。因为,`ans1=$marks[$class][$roll\u no][2]`是三维数组的一种模式。如果在一维数组中使用它,PHP将找不到指定的索引,并将显示错误。与将整个数据放入三维数组相比,删除是一个更好的选择,而且可以节省大量工作。代码再次编辑可以节省大量工作,但一旦完成,代码将更快r,因为它可以避免循环。或者如果你有2000条记录,每次循环执行2000次。如果你做了5次搜索,循环将运行10000次。有没有更好的方法,比如:JSON?正如你所说,每次搜索都会执行多次循环,我想要比三维数组(比如,ajax/JSON)更好的选项你可以考虑吗?
交换条件是否更好?当条件满足时,代码将执行结果而不是检查所有的结果。conditions@user2591029:我不确定是否有更好的方法。为此,当然你需要某种循环或数组机制。AJAX和json的工作原理也一样。。