首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP数组与不同类型的键合并

PHP数组与不同类型的键合并
EN

Stack Overflow用户
提问于 2018-08-27 20:11:02
回答 1查看 262关注 0票数 0

是否有任何方法将数组键与唯一名称合并,这样我就可以获得具有其类型和值的唯一键。我使用的是yii2和mysql

我在yii2中使用以下SQL查询:

代码语言:javascript
复制
$data= $query->SELECT(["sum(no_of_pages) as pages_coded",'assigned_to','type_of_request','concat(firstname," ",lastname) as userfullname'])
->from('task')
->leftJoin('user','user.username = task.assigned_to')
->andWhere("sdlc_phase='Resolved'")
->orWhere("sdlc_phase='Semi_Resolved'");
$query->groupby(['assigned_to', 'type_of_request']);
//$query->->addGroupBy('assigned_to');
$query->orderby(['assigned_to'=>SORT_ASC]);
$data = $query->all();

而SQL查询的输出是

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [pages_coded] => 5
            [type_of_request] => Collector Tweak
            [userfullname] => Sam
        )
    [1] => Array
        (
            [pages_coded] => 5
            [type_of_request] => Collector Code
            [userfullname] => John
        )
    [2] => Array
        (
            [pages_coded] => 42
            [type_of_request] => Collector Tweak
            [userfullname] => John
        )
    [3] => Array
        (
            [pages_coded] => 37
            [type_of_request] => Clinical Tweak
            [userfullname] => Dona
        )
    [4] => Array
        (
            [pages_coded] => 35
            [type_of_request] => Collector Code
            [userfullname] => Dona
        )
    [5] => Array
        (
            [pages_coded] => 7
            [type_of_request] => Clinical Code
            [userfullname] => Ricky
        )
    [6] => Array
        (
            [pages_coded] => 50
            [type_of_request] => Clinical Tweak
            [userfullname] => Ricky
        )
    [7] => Array
        (
            [pages_coded] => 4
            [type_of_request] => Collector Code
            [userfullname] => Ricky
        )
    [8] => Array
        (
            [pages_coded] => 17
            [type_of_request] => Collector Tweak
            [userfullname] => Ricky
        )
)

不过,我希望生成这样的输出,是否存在这样的输出?

代码语言:javascript
复制
 Array
(
    [Sam] => Array
        (
            [0] => Clinical Code
            [1] => 0
            [2] => Clinical Tweak
            [3] => 0
            [4] => Collector Code
            [5] => 0
            [6] => Collector Tweak
            [7] => 5
        )
    [John] => Array
        (
            [0] => Clinical Code
            [1] => 0
            [2] => Clinical Tweak
            [3] => 0
            [4] => Collector Code
            [5] => 5
            [6] => Collector Tweak
            [7] => 42
        )
    [Dona] => Array
        (
            [0] => Clinical Code
            [1] => 0
            [2] => Clinical Tweak
            [3] => 37
            [4] => Collector Code
            [5] => 0
            [6] => Collector Tweak
            [7] => 35
        )
   [Ricky] => Array
        (
            [0] => Clinical Code
            [1] => 7
            [2] => Clinical Tweak
            [3] => 50
            [4] => Collector Code
            [5] => 4
            [6] => Collector Tweak
            [7] => 17
        )
)

帮我解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 20:20:16

对于您想要的输出,您必须遍历结果,创建另一个数组。

代码语言:javascript
复制
$output = array();
foreach ($data as $row) {
    $output[$row['userfullname']][$row['type_of_request']] = $row['pages_coded'];
}

像这样,您将得到如下数组:

代码语言:javascript
复制
$output = array(
    'Sam' => array(
        'Collector Tweak' => 5
    ),
);

显然,如果找不到其他列,请用0填充:

代码语言:javascript
复制
$categories = array(
    'Clinical Code' => 0,
    'Clinical Tweak' => 0,
    'Collector Code' => 0,
    'Collector Tweak' => 0,
);
foreach ($output as &$outputItem) {
    $outputItem = array_merge($categories, $outputItem);
}

根据定义,它更容易跟踪索引及其各自的值。

在这里测试:https://3v4l.org/0k40Q

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52046344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档