• ベストアンサー

今、$abcという変数(配列)は、mysqlで取得した、生徒の名前と、

今、$abcという変数(配列)は、mysqlで取得した、生徒の名前と、テストの点数が入ってるとします。 つまり、点数に(50,60,70、・・・・n)、生徒に(A君,B君,C君、・・・・n) と入ってるとします。 今、A列すべてのの平均値を取りたいのですが、phpとしてどう書けばいいのでしょうか? 下記までできていますが、配列の概念がどうも理解できていないようで、詰まっています。。 $sum = 0; while (????){ $sum += $row['点数']; } $AVR = $sum/(count($result));

  • PHP
  • 回答数2
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

$abc = array( array('50', 'A君'), array('60', 'B君'), array('70', 'C君'), … ); という配列構造なら $sum = 0; foreach($abc as $row) { $sum += intval($row['点数']); } $AVR = $sum / count($abc);

k-ss_wbr
質問者

お礼

ありがとうございました! ばっちしできました!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

データの持ち方次第ですが、普通に平均点をだすなら、合計値を件数でわればいいので <? $a=array(50,60,70,80); $average=array_sum($a)/count($a) ; print $average; ?>

k-ss_wbr
質問者

お礼

ありがとうございました!参考になります!

関連するQ&A

  • [php]mysqlデータ配列取得について

    お世話になります。検索しても中々辿り着けなかったので質問させていただきます。 途中から //mysqlより全データ検索 $result = mysql_query('SELECT id FROM hoge ORDER BY id'); //添字配列として全データ取得   while($row = mysql_fetch_row($result)){ //ここの処理で$rowの配列を一行の配列として足していきたい。 var_dump($row); print('<br />');   } 現在の出力内容は array(1) { [0]=> string(1) "5" } array(1) { [0]=> string(1) "6" } array(1) { [0]=> string(1) "7" } array(1) { [0]=> string(1) "8" } こうした形で出力されます。 理想の出力内容は各arrayを足して、 array(4) { [0]=> string(1) "5" [1]=> string(1) "6" [2]=> string(1) "7" [3]=> string(1) "8"} 一行として出力したいのですが、一向にできる気配がありません。 初歩的なものだと思いますが、とても困ってます。何卒よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • MySQLからデータを取得して表示したい

    PHP+MySQLでWeb検索を作成していますが、不明点があるので質問させていただきます。 入力フォームから文字列を入力し、データベースに文字列がある場合、そのフィールド(行)のデータを表示させるということがうまくできません。(ちなみにデータベース接続、文字取得といったところは問題なくできています。) 例えば、以下のようなテーブルがあったとします。 学校 名前 点数 就職先 A校 佐藤 100 A社 B校 鈴木 90 B社 C校 寺本 80 C社 ここで入力フォームから鈴木と入力させて$nameに引き渡し、 $result = mysql_query( "select * from {$tableName} where `名前` like {$name}") ; while( $row = mysql_fetch_row( $result)){ var_dump( $row); } B校 鈴木 90 B社 という内容を表示させたいのですが、何も表示されません。データベース上(実際操作したのはphpmyadmin上)でクエリを送信してみると、フィールドが表示されるので、問題あるとしたら$rowのあたりかと思うのですが、原因がつかめません。どのように取得・表示させればいいか、ご教授下さいませ。 $result = mysql_query( "SELECT * from {$tableName}"); while( $row = mysql_fetch_row( $result)){ var_dump( $row); } ちなみにこれだとテーブルの全要素が配列に入って、表示されるのですが・・・。違いがよくわかりません。 よろしくお願い致します。

    • 締切済み
    • PHP
  • データベースから多次元連想配列でデータを取得できない

    PHP,MySQLともに初心者です いろんなサンプルプログラムを見て少しずつ進めているのですが、本3冊にネットで検索しても解決できないので・・・ function getSelect($field,$table,$where){ $query="select $field from $table $where;"; $result=$this->getResult($query); return $result; } $result=$db->getSelect("*","main","where myouji=$_POST[myouji]"); while($row = mysql_fetch_array($result[result])){ echo "$row[id]"; } こんな感じでmainテーブルからmyoujiに該当するrowを取得したのですが、 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in とエラーが出てしまいます。 他のところで、 $result=$db->getSelect("*","main","where id=$_POST[id]"); $rows=mysql_fetch_array($result[result]); としたときはエラーなく行くのですが、上のような多次元連想配列(下の方はidを重複させてないので必ずrowが1つ・・・1次元連想配列?)になるとエラーになってしまいます。 これはどう修正すればいいのでしょうか。 たったこれ1行のつまづきで4時間くらいかかってます。 誰か助けてください

    • ベストアンサー
    • PHP
  • smartyでMySQLから連想配列取り出しと表示

    フォーム(POST)を使ってMySQLにデータを挿入し、 mysql_fetch_assocにて連想配列で取り出して、 whileで表示する場合、 ======================================== $sql = "SELECT * hogehoge"; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)) { echo $row["userid"]; echo $row["name"]; echo $row["sex"]; } ======================================== とすれば、MySQLから値を取りだして表示できます。 ただ、それをsmartyに置き換えて以下のようにすると、 ======================================== {foreach from=$row item=hoge} <tr> <td>{$row.userid}</td> <td>{$row.name}</td> <td>{$row.sex}</td> </tr> {/foreach} ======================================== 同じ値が$rowの値の数だけ返されてしまいます。 例だと、 1 太郎 男 2 花子 女 3 一郎 男 4 陽子 女 5 良子 女 と表示したいものが、 1 太郎 男 1 太郎 男 1 太郎 男 となってしまいます。 これを解決するには、どのようにすればよろしいのでしょうか?

    • ベストアンサー
    • PHP
  • mysql_fetch_objectにデータを取得させたいのですが、うまく行きません。

    データ型 name varchar(30), item1 char(8), item2 int(6) で、テーブルが下記のようなっています。 | name |item1 | item2 | | taro | abcd | 53 | | taro | efghk | 48 | | taro | lmnp | 02 | while文で array_push($ydata, $row->item1) として $row = mysql_fetch_object($result) にデータを取得させたいのですが(スクリプト下記)、 $conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL'); mysql_select_db('***',$conn_id); $query ="SELECT item1,item2 from XYZ where name='taro'"; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $ydata = array(); while($row = mysql_fetch_object($result)){   ←10行目 // array_push($ydata, $row->item1);      //  ここに下記の13、14行目を追記 } var_dump($row);echo"<br />\n"; var_dump($result); print_r($row); echo"<br />\n"; これでブラウザから見ると bool(false) resource(3) of type (mysql result) としか出ません。(19行目の結果は表示されません。) そのため 13: echo "item1",$row['item1'],"<br>"; 14 echo "item2",$row['item2'],"<br>"; と追記してブラウザから見ると、単に [ item1 ]とだけ表示されます。 10 行目を while($row = mysql_fetch_arrayt($result)){ に変えてブラウザから見ると item1abcd item253 imem1efghk item250 item1lmnp item258 bool(false) resource(3) of type (mysql result)   となります。 $row = mysql_fetch_object($result) にデータを取得させるにはどのように修正すれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • 配列としてMysqlから値を取得する方法を教えて下さい。

    いつも助けていただきましてありがとうございます。 チェックボックスの値をMysqlに登録するところまではできましたが、 今度それを、確認・更新画面に読み込む方法でつまずいています。 どうぞご指導をお願い致します。 Mysqlから「days_id」の値が「0,2,5」と取得されても 実際のチェックが付くのが、「5」のみなってしまいます。 配列としてMysqlから値を取得する方法を教えて下さい。 $res = mysql_query($sql); $i=0; foreach($labels as $label){ while ($row = mysql_fetch_array($res)) { $days_id = $row["days_id"]; } if($i==$days_id){ $checked = " checked"; echo "<label>\n<input type=\"checkbox\" name=\"job_type[]\" value=\"{$i}\" {$checked} />{$label}</label>"; }else{ $checked = ""; echo "<label>\n<input type=\"checkbox\" name=\"job_type[]\" value=\"{$i}\" {$checked} />{$label}</label>"; } $i++; }

    • ベストアンサー
    • PHP
  • PHPでMySQLのデータを2次元配列に格納する

    PHPの本に $r = mysql_query("SELECT * FROM tb;"); while ($row = mysql_fetch_array($r)){ print "{$row['id']}{$row['title']}<BR>"; } とあったのですが1行ずつしか保存できないので 2次元配列row[][]で while ($row[] = mysql_fetch_array($r)){ } foreach($row as $v){ print "{$v['id']}{$v['title']}<BR>"; } このようにコーディングしたところ 一応うまく表示されたのですが、問題はないですか? もし普通はこういう風にするみたいなやり方があれば 教えて欲しいです。

    • ベストアンサー
    • PHP
  • phpの変数をmysqlへの命令文に含みたい

    mysqlへの接続等は完璧で問題なのは、phpの変数を含んだmysqlへの命令文です。 これは試行錯誤した上で間違いないと思いました。 具体的には $link = "接続の情報"  $table = "具体的なテーブル名" $result = mysql_query("select * from $table",$link) $row = mysql_fetch_array($result, mysql_assoc) としたときに print_r($row); が無反応です。 元のソースが今、手元にないので細かいところを間違えているかもしれませんが、select文で$tableを書く代わりに直接「具体的なテーブル名」と書いたらうまくいったので、phpの変数をphpからmysqlへの命令文に含む方法に問題があったと思った次第で、この方法を教えていただきたいです。 $linkまで含めて命令できるなら、その方法も教えていただきたいです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 配列の要素でmysqlに問い合わせ

    フォームから送信されたデータを配列として取得し、その配列の1つの要素に対してそれぞれmysqlにselectで問い合わせてageというカラムの値を取得したいと思っています。 配列の要素の数がその都度変わるので、要素が5つある場合には5回selectでデータベースに問い合わせてデータを5つ取得したいのですが、それは可能でしょうか? ためしに下記のようにしてみたのですが、うまく取得できませんでした。 $hairetu = $_POST; for($i=0; $i< count($hairetu) ; $i++){ $sql = "SELECT * FROM member where age = '$hairetu[i]';"; $res = mysql_query($sql, $conn) or die("エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); $age = $row["age"]; echo $age; } $ageの値をcount($hairetu)の回数分表示したいのですが、どのように処理していいのか分かりません。 また、根本的におかしな点もあると思いますがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • mysqlから取得した配列をカンマで分割して配列に

    mysqlに登録されたデータを添字配列で受け取り、配列の中のデータを区切り文字で分割して 新たな配列を作りたいのですが、どのようにすれば良いでしょうか? テーブル名:tableA |s_date|staff_id|   cell01  |cell02|~|   cell200   | ├──-┼───-┼──────┼──-┼─┼───────┤ |08-04|  002 |10:35,会議室,1| -  |~|19:40,フロアB,3 | ├──-┼───-┼──────┼──-┼─┼───────┤ テーブル名:tableB |staff_num|staff_name| 所属 | ├────┼────-┼───┤ |  002  | A山A男 |A支店 | ├────┼────-┼───┤ $sql = "SELECT * FROM tableA JOIN tableB ON tableA.staff_id = tableB.staff_num WHERE s_date = '$today' "; $rst = mysql_query($sql , $con); if($rst){ while($col = mysql_fetch_row($rst)){ cell01~cell200の結果を順番に出力したいので$col[15]と、添え字で取り出せる様にmysql_fetch_rowにしました。 for ($i = 2, $max = count($col); $i< $max - 3; $i++){ echo'<dd>'.$col[$i].'</dd>'."\n"; このままだと出力結果は下記になりますが <dd>10:35,会議室,1</dd> $col[$i]の中身をカンマで分割して利用したいと思っています。 $col[0][time] → 10:30   $col[200][time] → 19:40 $col[0][place] → 会議室   $col[200][place] → フロアB $col[0][flag] → 1      $col[200][flag] → 3 echo'<dd class="style'.$col[$i][flag].'">場所:'.$col[$i][time].'開始時間:'.$col[$i][time].'</dd>'."\n"; この様な感じで出力されるのが理想です。 <dd class="style1">場所:会議室 開始時間:10:35</dd> 違う書き方でも結果が同じであれば、それでも構いません。 少しでもアドバイスをいただければ助かります。よろしくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう