PHP / MySQL多次元/連想配列

arrays multidimensional-array mysqli php
PHP / MySQL多次元/連想配列

mySQLからデータを取得し、次のように配列(多次元)として出力するこのコードがあります。

$res = @mysqli_query($dbc, "SELECT id, subject, exam, marks, remarks  FROM log WHERE student = '2222' AND term = 'Term2'");
$studentMarks = array();

while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC))
{
    $studentMarks[$row['subject']][$row['exam']] = $row['marks'];
}



//So far the code displays $studentMarks like this:
//$studentMarks = array(
//    Maths => array('CAT1' => 50, 'CAT2' => 35)
//  , English => array('CAT1' => 20, 'MIDTERM' => 40)
//);

//I wish it to add remarks thus displaying $studentMarks like:(Not sure whether I am right)
//$studentMarks = array(
//    Maths => array('CAT1' => array(50,
//          "Good"
//          ),
//      array('CAT2' => array(35,
//          "Can do better"
//          )
//)
//  , English => array('CAT1' => array(20,
//          "Good"
//          ),
//      array('MIDTERM' => array(40,
//          "Much better"
//          )
//);

echo '';
echo 'Student

CAT1

CAT2

MIDTERM

‘;エコー ‘

‘; foreach($ studentMarks as $ studentSub ⇒ $ marks)\ {echo ‘

‘;エコー ‘

‘、$ studentSub、’

‘;エコー ‘

‘、(isset($ marks [‘ CAT1 ‘])? $ marks [‘CAT1’]: ”)、 ‘

‘;エコー ‘

‘、(isset($ marks [‘ CAT2 ‘])? $ marks [‘CAT2’]: ”)、 ‘

‘;エコー ‘

‘、(isset($ marks [‘ MIDTERM ‘])? $ marks [‘MIDTERM’]: ”)、 ‘

‘;エコー ‘

‘; } エコー ‘

‘;

私はこれを達成しようとしています:

SUBJECT CAT 1 | CAT 2 | MIDTERM | ENDTERM

MATH 50 35 +良い

質問:

表示された各マークの下/に対してコメントを表示するにはどうすればよいですか?

あなたの助けは大歓迎です…​

  0  0


ベストアンサー

$res = @mysqli_query($dbc, "SELECT id, subject, exam, marks, remarks  FROM log WHERE student = '2222' AND term = 'Term2'");
$studentMarks = array();

while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC))
{
    $studentMarks[$row['subject']][$row['exam']]['mark'] = $row['marks'];

    //This will get the remarks from the database
    $studentMarks[$row['subject']][$row['exam']]['remark'] = $row['remarks'];

    //This should be used when you chose to compare marks and display appropriate remarks
    //$studentMarks[$row['subject']][$row['exam']]['remark'] = ( $row['marks'] < 40)?'can do better':( $row['marks'] < 50)?'do better':'good';
}


    echo '';
    echo 'Student

CAT1

CAT2

MIDTERM

‘;エコー ‘

‘; foreach($ studentMarks as $ studentSub ⇒ $ marks)\ {echo ‘

‘;エコー ‘

‘、$ studentSub、’

‘;エコー ‘

‘、(isset($ marks [‘ CAT1 ‘])? $ marks [‘CAT1’] [‘mark’]: ”)、 ‘

‘;エコー ‘

‘、(isset($ marks [‘ CAT2 ‘])? $ marks [‘CAT2’] [‘mark’]: ”)、 ‘

‘;エコー ‘

‘、(isset($ marks [‘ MIDTERM ‘])? $ marks [‘MIDTERM’] [‘mark’]: ”)、 ‘

‘;エコー ‘

‘;エコー ‘

‘;エコー ‘

‘;エコー ‘

‘、(isset($ marks [‘ CAT1 ‘])? $ marks [‘CAT1’] [‘remark’]: ”)、 ‘

‘;エコー ‘

‘、(isset($ marks [‘ CAT2 ‘])? $ marks [‘CAT2’] [‘remark’]: ”)、 ‘

‘;エコー ‘

‘、(isset($ marks [‘ MIDTERM ‘])? $ marks [‘MIDTERM’] [‘remark’]: ”)、 ‘

‘;エコー ‘

‘; } エコー ‘

‘;

0


タイトルとURLをコピーしました