PHP массив избежать неопределенного смещения

Привет у меня есть такой массив

$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, если у Студента нет этого предмета

Спасибо за любую помощь и предложения

1

Решение

Ты можешь использовать 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";
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]