Привет у меня есть такой массив
$subject_names[7]="English";
$subject_names[11]="Software Engeneering";
//Student can choose multiple subjects and each subject have int_mark and ext_mark
$results['Matt'][7]['int_mark'] =15;
$results['Matt'][7]['ext_mark'] =55;
$results['Josh'][7]['int_mark'] =12;
$results['Josh'][7]['ext_mark'] =45;
$results['Josh'][11]['int_mark'] =14;
$results['Josh'][11]['ext_mark'] = 52;
// the array is to maintain crosstab format
И напечатать это я сделал
echo "Student Name\t";
foreach($subject_names as $subject_name)
{
echo "$subject_name\t";
}
echo "<br>";
foreach ($results as $student_name => $subjects)
{
echo "$student_name\t";
foreach($subject_names as $subject_id => $sub_name){
foreach ($subjects[$subject_id] as $mark){
echo "$mark\t";
}
}
echo "<br>";
}
Так как у ученика «Мэтта» нет subject_id 11 Он сообщает мне об ошибке
Примечание: неопределенное смещение: 11
Как мне проигнорировать это и напечатать N / A, если у Студента нет этого предмета
Спасибо за любую помощь и предложения
Ты можешь использовать isset()
вместе с count()
: —
if(isset($subjects[$subject_id]) && count($subjects[$subject_id])>0){
foreach ($subjects[$subject_id] as $mark){
echo "$mark\t";
}
}
Ты можешь использовать !empty()
с count()
проверьте тоже: —
if(!empty($subjects[$subject_id]) && count($subjects[$subject_id])>0){
foreach ($subjects[$subject_id] as $mark){
echo "$mark\t";
}
}
Других решений пока нет …