【问题标题】:Build a PHP array from a MySQL table从 MySQL 表构建 PHP 数组
【发布时间】:2014-08-10 10:47:09
【问题描述】:

我想从多行创建数组。在我的表中,我有 Year 字段,regd 字段用于计算学生人数,Class 字段。我想输出如下数据。

$data = array( 
              '2012' => array(
                             'KG_I' => 87,
                             'KG_II' => 80,
                             'I' => 90,
                             'II' => 120,
                             'III' => 100,
                             'IV' => 110,
                             'V' => 98,
             ),
             '2013' => array(
                             'KG_I' => 82,
                             'KG_II' => 84,
                             'I' => 92,
                             'II' => 110,
                             'III' => 120,
                             'IV' => 108,
                             'V' => 90,
             ),
            '2014' => array(
                            'KG_I' => 90,
                            'KG_II' => 83,
                            'I' => 95,
                            'II' => 110,
                            'III' => 120,
                            'IV' => 81,
                            'V' => 95,
            ),
  );

我的尝试是这样的:

$std=array();
$hms="SELECT COUNT(DISTINCT regd) as stdNum, Class, Year FROM 
      student GROUP by Class";
$quar=mysql_query($hms);
$myarray = array();
while($row = mysql_fetch_array($quar)){
    $myarray[$row['Class']] = $row['stdNum'];
}

我不知道如何输出 Year 数组。

【问题讨论】:

  • 它应该是 GROUP by Year 然后是 class 即GROUP BY Year, Class
  • 如果您认为您的 SQL 查询有问题,您应该导出您的学生表,以便我们进行测试。
  • 在此处提供 SQL Fiddle 可能会有所帮助,以便我们查看您的测试数据。有些人甚至会为您分叉并提供建议的查询。

标签: php mysql arrays multidimensional-array


【解决方案1】:

让我们试试这个:

while($row = mysql_fetch_array($quar)){
    $myarray[$row['Year']][$row['Class']] = $row['stdNum'];
}

享受:)

【讨论】:

  • 你没有提到我是如何输出的。我的输出没有显示 Year 数组。
  • 啊,我评论说这个有语法错误,但我明白你现在在做什么。出于这个原因,我会为 $year$class 创建中间变量,但是 +1。
【解决方案2】:

您打开了两个不必要的数组。 print_r() 在处理数组时可能会派上用场。希望这会有所帮助。

$hms="Select Year, Class, COUNT(DISTINCT regd) as stdNum 
      from student group by Year, Class";
$quar=mysql_query($hms);
$myArray = array();
while($row = mysql_fetch_assoc($quar)){
    $mya[$row['Year']][$row['Class']] =  $row['stdNum'];
}
echo "<pre>";
print_r($myArray);
echo "</pre>";

【讨论】:

    【解决方案3】:
    $std=array();
    $hms="Select Year,Class,count(regd) 'stdNum' from       student group by Year,Class";
    $quar=mysql_query($hms);
    $myarray = array();
    while($row = mysql_fetch_array($quar)){
        $myarray[$row['Year']]$row['Class']] =      $row['stdNum'];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-29
      • 2011-10-26
      • 2011-07-17
      • 2011-10-26
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 2010-11-06
      相关资源
      最近更新 更多