PHP 数组值到唯一键

标签 php mysql arrays

我有一个根据 MYSQL 查询结果构建的关联数组。它有 190 个键,由 10 个唯一的“名称”和 19 个唯一的“显示名称”(2B、3B、HR、RBI、HR 等)组成,每个“名称”和“显示名称”组合都有一个“值”。

    array (size=190)
  0 => 
    array (size=3)
      'name' => string 'Name 1' (length=17)
      'display_name' => string '2B' (length=2)
      'value' => string '10' (length=2)
  1 => 
    array (size=3)
      'name' => string 'Name 2' (length=20)
      'display_name' => string '2B' (length=2)
      'value' => string '7' (length=1)
  2 => 
    array (size=3)
      'name' => string 'Name 3' (length=18)
      'display_name' => string '2B' (length=2)
      'value' => string '5' (length=1)
  3 => 
    array (size=3)
      'name' => string 'Name 4' (length=19)
      'display_name' => string '2B' (length=2)
      'value' => string '3' (length=1)
  4 => 
    array (size=3)
      'name' => string 'Name 5' (length=11)
      'display_name' => string '2B' (length=2)
      'value' => string '4' (length=1)

我想构建一个数组,它具有唯一的“display_name”作为键,“name”作为键,“value”与之关联。换句话说,如果您将其想象成一张表格,那么目前它看起来像:

name  :   display name :  value
name1     2B              10
name2     2B              7
name3     2B              5
name4     2B              3
name5     2B              4

我希望它看起来像:

name   :  2B   :  3B  :  RBI  :  HR
name1     10      5      7       10
name2     8       6      5       9
name3     9       4      3       5
name4     2       1      1       1
name5     6       2      2       8 

我知道我可以在 MYSQL 中执行此操作,但我想知道在 PHP 中的解决方案。我尝试了很多不同的东西并引用了(以及其他许多东西): Transposing multidimensional arrays in PHP

MYSQL类似解决方案: Transpose Rows to Headers in MYSQL

我能得到的最接近的是这个,但它确实让我得到了唯一的 'display_name' 值作为键,而不是 $fieldHash['display_name'] 所有 190 个值。

while ($arr = mysql_fetch_assoc($res)){
$row [] = $arr;
foreach($row as $resultArray){
foreach ( $resultArray as $key=>$val ){
$fieldHash[$key][] = $val; 
}
}
}

在这种情况下,我知道数据模型,但将来我希望动态显示任意数量的“display_name”。

如果有帮助,这里是 MYSQL 查询:

$query = "SELECT teaminfo.name, league_stat_categories.display_name, team_points_season.value
FROM team_points_season, teaminfo, league_stat_categories 
WHERE team_points_season.league_key = '$league_key' AND team_points_season.team_key = teaminfo.team_key AND team_points_season.league_key = league_stat_categories.league_key 
AND team_points_season.stat_id = league_stat_categories.stat_id
GROUP BY league_stat_categories.display_name, team_points_season.team_key";

感谢您的帮助!

最佳答案

//recieved_arr - your array from example

$new_arr=array();
foreach($recieved_arr as $arr){
   // $arr['name']; $arr['display_name']; $arr['value']; - your values for current element
   $name = $arr['name'];
   $new_arr[$name]['display_name'] = $arr['display_name'];
   $new_arr[$name]['value'] = $arr['value'];

}

关于PHP 数组值到唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19369051/

相关文章:

c++ - C++中的"Free"数组元素

javascript - 在子函数中使用带有闭包的 concat 方法

php - 使用 curl 和 PHP 保存文件

mysql - 触发更新MySQL中同一张表中的多条记录

mysql - 功能与 to_char(datetime) 类似,可以在 Oracle 和 MySQL 中使用?

PHP 数组在 foreach 上的转换不会通过引用传递变量

php - 错误抑制@不工作

php - 指定的列不在行中

php - Magento - 新的自定义模块未安装新的 MySQL 表和其他 SQL 规则

mysql - 如何在MySQL "EXECUTE STATEMENT USING"语句中使用变量列表?