1

株式が属する主要産業セクターとサブセクターを含む株式情報を含むMySQLテーブルがあります(たとえば、コカ・コーラ株式は産業セクター「消費財」とサブセクター「飲料-ソフトドリンク」に属しています。

$SQL = "SELECT name, industrysector, subsector FROM Stocks WHERE economic_indicator_type = 'Stock' GROUP BY industrysector, subsector, name";
$result = mysql_query($SQL) or die ("Error in query: $SQL. " . mysql_error());

while ($row = mysql_fetch_row($result)) {

 $stocks[$i]['name'] = $row[0];
 $stocks[$i]['industrysector'] = $row[1];  
 $stocks[$i]['subsector'] = $row[2]; 

 $i++;
}

$stocksTotals = array();

foreach($stocks as $amount) { 
    $stocksTotals[$amount['industrysector']] = $stocksTotals[$amount['industrysector']].", ".$amount['name']; 
}

foreach($stocksTotals as $name => $amount) {    echo $name.": ".substr($amount,1)."<br>"; }  

私の問題は、第3レベルを処理するコードを取得できないことです。最初にすべての産業セクター(たとえば基本資料)を出力し、次に各産業セクターのすべてのサブセクター(たとえば基本リソース)を出力し、次に各サブセクターに対応するすべての株式名を出力します。

現在、配列処理コードでこれを処理する方法を理解していないため、業界セクターと株式名のみを取得しています。

アドバイスをいただければ幸いです。参考のために、ここ(http://imageshack.us/photo/my-images/853/mysqltophp.gif/)に画像を配置しました。

ありがとう!

4

1 に答える 1

0

foreachループは次のようにする必要があります。

 //considering you want the value as "$amount['industrysector'], $amount['name']" 
foreach($stocks as $amount) { 
// $stocksTotals[$amount['industrysector']] = $amount['industrysector'] .", ".$amount['name']; 
  echo $amount['industrysector'].": "."$amount['industrysector'], $amount['name']"."<br>";
 }

別のforeachループは必要ありません。

編集:行をフェッチする方法も変更する必要があります、

while ($row = mysql_fetch_assoc($result)) {
  $stocks[$i]['name'] = $row['name'];
  $stocks[$i]['industrysector'] = $row['industrysector'];  
  $stocks[$i]['subsector'] = $row['industrysector']; 
  $i++;
 }



foreach($stocks as $amount) { 
 $output = "$amount['industrysector'] : $amount['industrysector'], $amount['subsector']";
 if( $amount['name'] !== '' )
   $output .= "<br>" . $amount['name'];
 ";
}
于 2012-10-03T17:58:12.093 に答える