首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在等键上组合两个数组

在等键上组合两个数组
EN

Stack Overflow用户
提问于 2014-04-07 18:34:44
回答 2查看 53关注 0票数 2

在给定以下数组的情况下,如何组合两个数组,其中第一个数组的State = State,第二个数组的ProgramName = ProgramName

代码语言:javascript
复制
Array
(
[0] => stdClass Object
    (
        [Year] => 2013
        [State] => AK
        [ProgramName] => Medicaid
        [Age21Total] => 56324
        [Age21FFS] => 56324
        [Age21MCO] => 56324
        [Age21Other] => 
        [Under21Total] => 
        [Under21FFS] => 
        [Under21MCO] => 
        [Under21Other] =>
    )

[1] => stdClass Object
    (
        [Year] => 2013
        [State] => AK
        [ProgramName] => Medicaid
        [Age21Total] => 
        [Age21FFS] => 
        [Age21MCO] => 
        [Age21Other] => 
        [Under21Total] => 99085
        [Under21FFS] => 99085
        [Under21MCO] => 99085
        [Under21Other] =>
    )
 [2] => stdClass Object
    (
        [Year] => 2013
        [State] => AK
        [ProgramName] => CHIP
        [Age21Total] => 563241
        [Age21FFS] => 563241
        [Age21MCO] => 563241
        [Age21Other] => 
        [Under21Total] => 
        [Under21FFS] => 
        [Under21MCO] => 
        [Under21Other] =>
    )

[3] => stdClass Object
    (
        [Year] => 2013
        [State] => AK
        [ProgramName] => CHIP
        [Age21Total] => 
        [Age21FFS] => 
        [Age21MCO] => 
        [Age21Other] => 
        [Under21Total] => 990851
        [Under21FFS] => 990851
        [Under21MCO] => 990851
        [Under21Other] =>
    )
)

我的尝试:

代码语言:javascript
复制
    for($i = 0; $i < $rCt; ++$i){
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['Total Enrolled'] = $responses[$i]->Age21Total;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['FFS'] = $responses[$i]->Age21FFS;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['MCO'] = $responses[$i]->Age21MCO;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['Other'] = $responses[$i]->Age21Other;

        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['< Age 21']['Total Enrolled'] = $responses[$i]->Under21Total;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['< Age 21']['FFS'] = $responses[$i]->Under21FFS;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['< Age 21']['MCO'] = $responses[$i]->Under21MCO;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['< Age 21']['Other'] = $responses[$i]->Under21Other;
    }

正在制作:

代码语言:javascript
复制
Array
(
[Medicaid] => Array
    (
        [AK] => Array
            (
                [Age 21+] => Array
                    (
                        [Total Enrolled] => 
                        [FFS] => 
                        [MCO] => 
                        [Other] => 
                    )

                [< Age 21] => Array
                    (
                        [Total Enrolled] => 99085
                        [FFS] => 99085
                        [MCO] => 99085
                        [Other] => 
                    )

            )

当我需要:

代码语言:javascript
复制
Array
(
[Medicaid] => Array
    (
        [AK] => Array
            (
                [Age 21+] => Array
                    (
                        [Total Enrolled] => 56324
                        [FFS] => 56324
                        [MCO] => 56324
                        [Other] => 
                    )

                [< Age 21] => Array
                    (
                        [Total Enrolled] => 99085
                        [FFS] => 99085
                        [MCO] => 99085
                        [Other] => 
                    )

            )

那么,我如何才能产生我需要的数组呢?我通常假设包含数据的两个独立数组的array_merge,但是当stateprogramname对于每个元素相等时,我需要进行合并。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-07 18:45:53

这是因为当您在数组中循环时,第二次迭代的结果将击败第一次迭代。例如,您可能希望在将$responses[$i]->Age21Total分配给$response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['Total Enrolled']之前检查它是已定义的还是非空的。

编辑:使其更加明确:

代码语言:javascript
复制
for($i = 0; $i < $rCt; ++$i) {
    if (strlen($responses[$i]->Age21Total) != 0) {
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['Total Enrolled'] = $responses[$i]->Age21Total;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2014-04-07 19:04:51

这样行吗?

代码语言:javascript
复制
  for($i = 0; $i < $rCt; ++$i){
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['Total Enrolled'] = $responses[0]->Age21Total;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['FFS'] = $responses[0]->Age21FFS;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['MCO'] = $responses[0]->Age21MCO;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['Age 21+']['Other'] = $responses[0]->Age21Other;

        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['< Age 21']['Total Enrolled'] = $responses[1]->Under21Total;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['< Age 21']['FFS'] = $responses[1]->Under21FFS;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['< Age 21']['MCO'] = $responses[1]->Under21MCO;
        $response_tree[$responses[$i]->ProgramName][$responses[$i]->State]['< Age 21']['Other'] = $responses[1]->Under21Other;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22920366

复制
相关文章

相似问题

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