【问题标题】:How to transform and store sql results in php array/object如何在php数组/对象中转换和存储sql结果
【发布时间】:2019-07-03 20:18:36
【问题描述】:

我有一个如下所示的 SQL 数据

|username|FinalState|Duration       |
|user1   |Status1   |00:02:13.747   |
|user1   |Status2   |00:00:20.027   |
|user1   |Status3   |00:00:10.818   |
|user1   |Status4   |00:00:00.000   |
|user2   |Status1   |00:49:59.945   |
|user2   |Status2   |00:18:18.248   |
|user2   |Status5   |00:00:00.450   |

我需要将其转换为 PHP 数组/对象,使其看起来像这样

$data["user1"] = [status1 => 00:02:13.747 , status2 => 00:00:20.027 .... ]
$data["user2"] = [status1 => 00:49:59.945 , status2 => 00:18:18.248 .... ] 

问题在于FinalState 对用户来说是不同的组合。

【问题讨论】:

  • 你试过什么?我的一般建议是自己迭代和构建数组。
  • 我最后一次做类似的事情是遍历所有的值。但在这种情况下,状态列可能会发生变化,而在我之前的尝试中,状态是固定值。

标签: php mysql arrays


【解决方案1】:

假设您检索了所有数据,所以现在您有一个数组:

$arr = array(["username" => "user1", "FinalState" => "Status1", "Duration" => "00:02:13.747"], ["username" => "user1", "FinalState" => "Status2", "Duration" => "00:00:20.027"], ...);

您可以通过对 all 使用简单的选择来获取此数据 - 并使用 FETCH_DATA_ASSOC 标志。

现在,您只需要简单的foreach 循环:

foreach($arr as $e) {
    $data[$e["username"]][$e["FinalState"]] = $e["Duration"];
}

它 - 现场示例:3v4l

【讨论】:

  • 太棒了。这行得通。我最后一次做类似的事情是遍历每个数组,这不是最好的方法。谢谢。
猜你喜欢
  • 2021-06-27
  • 2015-11-25
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 2012-01-11
相关资源
最近更新 更多