0から127までの10進数を受け渡すと、教科を返す関数を作成しましたが、返り値が正しくありません。
例えば120を受け渡すと本来”国語(小学校)算数(小学校) 国語(中学校) 数学(中学校)”で返ってくるべきところ、”国語(小学校)国語(中学校) 数学(中学校)”と一部飛ばされてしまいます。飛ばされる教科の法則性を見いだせていません。
php
1// subjectの10進数から指導教科(文字列)を返す 2function check_subject($subject){ 3 $bi_subject = decbin($subject); 4 $es_jamanese = 0b1000000; 5 $es_mathmatics = 0b100000; 6 $js_jamanese = 0b10000; 7 $js_mathmatics = 0b1000; 8 $js_science = 0b100; 9 $js_social_studies = 0b10; 10 $js_english = 0b1; 11 if($bi_subject & $es_jamanese){ 12 $str_subject .= "国語(小学校)"; 13 } 14 if($bi_subject & $es_mathmatics){ 15 $str_subject .= " 算数(小学校)"; 16 } 17 if($bi_subject & $js_jamanese){ 18 $str_subject .= " 国語(中学校)"; 19 } 20 if($bi_subject & $js_mathmatics){ 21 $str_subject .=" 数学(中学校)"; 22 } 23 if($bi_subject & $js_science){ 24 $str_subject .=" 理科(中学校)"; 25 } 26 if($bi_subject & $js_social_studies){ 27 $str_subject .=" 社会(中学校)"; 28 } 29 if($bi_subject & $js_english){ 30 $str_subject .=" 英語(中学校)"; 31 } 32 //$str_subject = trim($str_subject); 33 if(empty($str_subject)){ 34 return NULL; 35 }else{ 36 return $str_subject; 37 } 38}
回答2件
あなたの回答
tips
プレビュー