我希望在此代码中显示通过和失败学生的数量(如果得分大于50则通过,否则失败)。
<?php
$students= array(
array (100, 'Ali',78),
array (200, 'Khalied',50),
array (300, 'Fatema',44),
array (400, 'Sumaya',80),
);
?>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Score</th>
</tr>
<?php
foreach($students as $student){
echo'<tr>';
foreach($student as $item){
echo "<td>$item</td>";
}
echo '</tr>';
}
$filled_array=$students[0];
$count=count($filled_array);
echo $count;
?>
答案 0 :(得分:1)
我要做的第一件事是通过添加键来重构学生数组。
<?php
$students= array(
array ('ID'=>100, 'Name'=>'Ali','Score'=>78),
array ('ID'=>200, 'Name'=>'Khalied','Score'=>50),
array ('ID'=>300, 'Name'=>'Fatema','Score'=>44),
array ('ID'=>400, 'Name'=>'Sumaya','Score'=>80),
);
?>
然后,您可以修改循环以根据具有其他数组的键来跟踪分数。
<?php
$resultsArray = array('Pass'=>0, 'Fail'=>0);
foreach($students as $student){
if( $student['Score'] > 50 ){ // PASS
$resultsArray['Pass']++;
} else { // FAIL
$resultsArray['Fail']++;
}
}
?>
答案 1 :(得分:0)
<?php
$students = array(
array (100, 'Ali',78),
array (200, 'Khalied',50),
array (300, 'Fatema',44),
array (400, 'Sumaya',80),
);
$passed = $failed = 0;
?>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Score</th>
</tr>
<?php
foreach($students as $student) {
$getMarks = $student[2];
$getMarks>50 ? $passed++ : $failed++;
echo '<tr><td>'.implode("</td><td>", $student).'</td></tr>';
}
?>
</table>
Passed : <?php echo $passed; //prints 2 ?><br>
Failed : <?php echo $failed; //prints 2 ?>
以上是您需要的摘要。
首先,通过避免循环并通过添加implode
来代替循环来提高性能。
使用值passed
初始化了两个变量failed
和0
,并在循环内有条件地递增了(if marks greater than 50)
答案 2 :(得分:0)
这无法实现您的目标。
$filled_array=$students[0];
$count=count($filled_array);
echo $count;
$students[0]
是数组[100, 'Ali',78]
,所以计算它每次都会返回3。
由于您已经在学生列表上循环,只需在循环之前添加一个计数器,并为每个通过的学生增加一个。
$passing_count = 0; // start at zero
foreach($students as $student) {
if ($student[2] > 50) { // student[2] is the grade
$passing_count++; // increment count if passing
}
echo'<tr>';
foreach($student as $item) {
echo "<td>$item</td>";
}
}
如果您想查找失败学生的数量,您可以在循环后从$passing_count
(所有学生)中减去count($students)
(通过学生)。
答案 3 :(得分:0)
您可以在迭代学生时评估通过/失败,并在结尾显示结果,如下所示:
<?php
$students= array(
array (100, 'Ali',78),
array (200, 'Khalied',50),
array (300, 'Fatema',44),
array (400, 'Sumaya',80),
);
?>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Score</th>
</tr>
<?php
$fail = 0;
$pass = 0;
foreach($students as $student){
($student[2] <= 50 ? $fail++ : $pass++);
echo'<tr>';
foreach($student as $item){
echo "<td>$item</td>";
}
echo '</tr>';
}
echo '</table>';
echo 'Pass: ' . $pass;
echo '<br />';
echo 'Fail: ' . $fail;
?>