【问题标题】:PHP: Adding multiple associative arrays to another arrayPHP:将多个关联数组添加到另一个数组
【发布时间】:2017-09-22 09:35:12
【问题描述】:

这是一个数据样本

Date  | Source | Amount
-----------------------
01A   | S1     | 12
01A   | S4     | 2
01A   | S7     | 134
02A   | S1     | 126
03A   | S4     | 10
02A   | S7     | 0
02A   | S1     | 3
02A   | S4     | 4
02A   | S7     | 5

生成的数组需要如下所示:

Array
(
    [01A] => Array
        (
            [S1] => 12
            [S4] => 2
            [S7] => 134
        )
    [02A] => Array
        (
            [S1] => 126
            [S4] => 10
            [S7] => 0
        )
    [03A] => Array
        (
            [S1] => 3
            [S4] => 4
            [S7] => 5
        )
)

我尝试查看诸如 PHP Adding multiple associative arrays to new array based on keyPHP multiple arrays to one associative arrayMerge multiple associative arrays to a single array of associative arrays 之类的页面,并使用如下代码(不使用相同的数据 - 但相同的理论),但它没有产生我需要的东西。下面的代码只显示了A和B

    $array = Array();
    $a=array( "ABC" => array("A"=>"RED","B"=>"GREEN"));
    $b=array( "ABC" => array("C"=>"BLUE","D"=>"YELLOW"));
    $array = $a + $b;
    echo '<pre>';
    print_r($array);
    echo '</pre>';

【问题讨论】:

  • 原始数据是否在数据库中?如果有,是哪一个?
  • 是的 - 它是 MySQL 的精简版
  • 有很多 PHP array functions 可以使用。或者使用简单的foreach 循环来构建预期的数组。你有没有尝试过?
  • 这就是我要求的原因-我不知道该怎么做-我已经尝试过
  • 那你应该看看如何Pivot a Table Here would be a good start 然后你可以让MYSQL为你做所有的工作

标签: php arrays


【解决方案1】:

亲吻

$result = array();
foreach($rows as $row)
{
    if(!isset($result[$row['Date']])) $result[$row['Date']] = array();
    $result[$row['Date']][$row['Source']] = $row['Amount'];
}

【讨论】:

    【解决方案2】:

    假设您已经拥有$input 数组中的数据,代码很简单:

    $result = array();
    foreach ($input as $row) {
        $date = $row['Date'];
        if (! array_key_exists($date, $result)) {
            $result[$date] = array();
        }
    
        $result[$date][$row['Source']] = $row['Amount'];
    }
    

    如果您在 $input 中没有数据,但您从数据库中获取数据,只需替换以下行:

    foreach ($input as $row) {
    

    使用与您的数据检索循环相匹配的内容,例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 2021-12-10
      • 1970-01-01
      • 2016-10-19
      相关资源
      最近更新 更多