gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:05 24 4
gpt4 key购买 nike

有什么方法可以将数组键与唯一名称合并,这样我就可以获得唯一键及其类型和值。我正在使用 yii2 和 mysql

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

$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 查询的输出是

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
)
)

但是我想要像这样生成输出,有没有办法得到这个

 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
)
)

帮我解决这个问题。

最佳答案

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

$output = array();
foreach ($data as $row) {
$output[$row['userfullname']][$row['type_of_request']] = $row['pages_coded'];
}

像这样你最终会得到这样的数组:

$output = array(
'Sam' => array(
'Collector Tweak' => 5
),
);

并且由于您显然希望其他列在找不到时用 0 填充:

$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

关于PHP 数组与不同类型的键合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com