首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP - Array替换相同的值并显示一个记录减少。

PHP - Array替换相同的值并显示一个记录减少。
EN

Stack Overflow用户
提问于 2015-11-23 09:24:58
回答 4查看 48关注 0票数 0

$hours_effort_result输出

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [EMPLOYEEID] => 14453
                    [EMPLOYEE_NAME] => User 1
                    [SKILL_NAME] => Application Software
                    [PROJECTED_HOURS] => 20
                    [SITE_STATUS] => Offshore
                    [MONTH_YEAR] => JUL-2015
                )

            [1] => Array
                (
                    [EMPLOYEEID] => 14559
                    [EMPLOYEE_NAME] => User 2
                    [SKILL_NAME] => Application Software
                    [PROJECTED_HOURS] => 50
                    [SITE_STATUS] => Offshore
                    [MONTH_YEAR] => JUL-2015
                )

            [2] => Array
                (
                    [EMPLOYEEID] => 14559
                    [EMPLOYEE_NAME] => User 2
                    [SKILL_NAME] => Application Software
                    [PROJECTED_HOURS] => 150
                    [SITE_STATUS] => Offshore
                    [MONTH_YEAR] => JUL-2015
                )

            [3] => Array
                (
                    [EMPLOYEEID] => 14611
                    [EMPLOYEE_NAME] => User 3
                    [SKILL_NAME] => Application Software
                    [PROJECTED_HOURS] => 60
                    [SITE_STATUS] => Offshore
                    [MONTH_YEAR] => JUL-2015
                )

阵列操作

代码语言:javascript
复制
$user_array = Array();
foreach ($hours_effort_result as $key => $data) {

                if (!empty($data)) {

                    foreach ($data as $key => $val) {

                        if ('JUL-2015' == $month) {


                            $user_array[$val['EMPLOYEE_NAME']][$month]['EMPLOYEEID'] = $val['ACTUAL_HOURS'];
                            $user_array[$val['EMPLOYEE_NAME']][$month]['SITE_STATUS'] = $val['SITE_STATUS'];
                            $user_array[$val['EMPLOYEE_NAME']][$month]['PROJECTED_HOURS'] = $val['PROJECTED_HOURS'];

                        }
                    }
                }
            }

$user_array输出

代码语言:javascript
复制
Array
(
    [User 1] => Array
        (
            [JUL-2015] => Array
                (
                    [EMPLOYEEID] => 14453
                    [SITE_STATUS] => Offshore
                    [PROJECTED_HOURS] => 20
                )

        )

    [User 2] => Array
        (
            [JUL-2015] => Array
                (
                    [EMPLOYEEID] => 14559
                    [SITE_STATUS] => Offshore
                    [PROJECTED_HOURS] => 150
                )

        )

    [User 3] => Array
        (
            [JUL-2015] => Array
                (
                    [EMPLOYEEID] => 14611
                    [SITE_STATUS] => Offshore
                    [PROJECTED_HOURS] => 60
                )

        )

这里,$user_array有两个User 2记录,但只显示one记录。值存储在同一个key中,因此它重写并显示该key的最后一个值。

如何避免这种情况,并显示来自$hours_effort_result的相同数量的记录?

期望的最终输出

代码语言:javascript
复制
Array
(
    [User 1] => Array
        (
            [JUL-2015] => Array
                (
                    [EMPLOYEEID] => 14453
                    [SITE_STATUS] => Offshore
                    [PROJECTED_HOURS] => 20
                )

        )

    [User 2] => Array
        (
            [JUL-2015] => Array
                (
                    [EMPLOYEEID] => 14559
                    [SITE_STATUS] => Offshore
                    [PROJECTED_HOURS] => 50
                )

        )


    [User 2] => Array
        (
            [JUL-2015] => Array
                (
                    [EMPLOYEEID] => 14559
                    [SITE_STATUS] => Offshore
                    [PROJECTED_HOURS] => 150
                )

        )

    [User 3] => Array
        (
            [JUL-2015] => Array
                (
                    [EMPLOYEEID] => 14611
                    [SITE_STATUS] => Offshore
                    [PROJECTED_HOURS] => 60
                )

        )
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-23 09:29:24

更改PHP代码并尝试agian :-

代码语言:javascript
复制
$final_array = Array();
foreach ($hours_effort_result as $key => $data)
{
    if (!empty($data))
    {
        foreach ($data as $key => $val)
        {
            if ('JUL-2015' == $month)
            {
                $user_array = Array();

                $user_array[$val['EMPLOYEE_NAME']][$month]['EMPLOYEEID'] = $val['ACTUAL_HOURS'];
                $user_array[$val['EMPLOYEE_NAME']][$month]['SITE_STATUS'] = $val['SITE_STATUS'];
                $user_array[$val['EMPLOYEE_NAME']][$month]['PROJECTED_HOURS'] = $val['PROJECTED_HOURS'];

                array_push($final_array, $user_array);
            }
        }
    }
}

现在打印$final_array,你就得到了你想要的答案。

票数 0
EN

Stack Overflow用户

发布于 2015-11-23 09:30:44

问题是,您使用的是其他东西作为关键,而且它并不是唯一的。对于原始数组中的记录1和记录2,员工名称相同。

只需为第二个数组使用唯一的键即可。

票数 0
EN

Stack Overflow用户

发布于 2015-11-23 09:31:38

User2的两个记录是相同的。根据意义或属性。我认为它是重复的,应该被视为数据错误。

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

https://stackoverflow.com/questions/33867465

复制
相关文章

相似问题

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