繁体   English   中英

PHP:多个arrays放入html表

[英]PHP : multiple arrays into html table

我有这段代码,我想将两个 arrays 提交到 html 中的一个表中。它工作正常,直到我尝试将另一个数组添加到表中。

在此处输入图像描述这是我添加下一个要在可能的分数列中显示的数组之前的样子。 添加新数组后,所有行都消失了,但剩下列标题。 如果可能的话,我想保持与目前所做的相同的格式。

<!DOCTYPE html>
<html>
<body>
<table border="1">

<th></th><th>Student Score</th><th>Possible Score</th><th>Percentage</th>

<?php
//Scores to table
    $Scores = fopen("scores.txt", "r");
    $Poss = fopen("Poss.txt", "r");
    $ind = 0;
    
    while(!feof($Scores)) {
        $Scoresarray[$ind] = fgets($Scores);
        $ind++;
    }
    while(!feof($Poss)) {
        $Possarray[$ind] = fgets($Poss);
        $ind++;
    }

    fclose($Poss);
    fclose($Scores);
    
    if(sizeof($Scoresarray,$Possarray)>1){
        $i=1;
        while($i<sizeof($Scoresarray,$Possarray)){
            echo "<tr>
            <td>".$i."</td>
            <td>".$Scoresarray[$i-1]."</td>
            <td>".$i."</td>
            <td>".$Possarray[$i-1]."</td>
            </tr>";
            
            $i++;
        }
    }


?>

</table>
</body>
</html>

假设 2 arrays 的长度相同,你可以做......

所有计数器都可以删除,不需要它们, sizeof()一次只会计算一个数组,并且是count() function 的别名,所以我使用了count()

如果你使用foreach()来获取一个数组的出现和索引,就像这样foreach ($Scoresarray as $i => $score ){你可以遍历 arrays 中的一个并使用索引获取相应的其他阵列的出现也是如此。

$Scores = fopen("scores.txt", "r");
$Poss = fopen("Poss.txt", "r");

while(!feof($Scores)) {
    $Scoresarray[] = fgets($Scores);
}
while(!feof($Poss)) {
    $Possarray[] = fgets($Poss);
}

fclose($Poss);
fclose($Scores);

if( count($Scoresarray) > 1 && count($Possarray) > 1){
    foreach ($Scoresarray as $i => $score ){
        echo "<tr>
        <td>".$i."</td>
        <td>".$score."</td>
        <td>".$i."</td>
        <td>".$Possarray[$i]."</td>
        </tr>";
    }
}

再次假设文件的长度相同,您可以构建一个 Assoc 值数组,这样结果的处理就变得更加容易

$Scores = fopen("scores.txt", "r");
$Poss = fopen("Poss.txt", "r");

while(!feof($Scores)) {
    $scoreAndPos[] = ['score' => fgets($Scores), 'Poss' =>fgets($Poss)];
}

foreach ($scoreAndPos as $i => $sp ){
    echo "<tr>
    <td>".$i."</td>
    <td>".$sp['score']."</td>
    <td>".$i."</td>
    <td>".$sp['poss']."</td>
    </tr>";
}

或者您可以使用file()将整个文件读入行数组。

$Scores = file("scores.txt");
$Poss = file("Poss.txt");

然后使用第一个 foreach 循环来处理这些 2 arrays

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM