PHP数组重组

我有这样一个数组
array(97) {
[0] => array(5) {

["job_id"] => string(1) "1"
["job_name"] => string(18) "内资公司注册"
["work_name"] => string(12) "公司注册"
["flow_name"] => string(15) "预约核名号"
["work_id"] => string(1) "1"

}
[1] => array(5) {

["job_id"] => string(1) "1"
["job_name"] => string(18) "内资公司注册"
["work_name"] => string(12) "公司注册"
["flow_name"] => string(18) "办理名称核准"
["work_id"] => string(1) "1"

}
[2] => array(5) {

["job_id"] => string(1) "1"
["job_name"] => string(18) "内资公司注册"
["work_name"] => string(12) "公司注册"
["flow_name"] => string(15) "预约受理号"
["work_id"] => string(1) "1"

}
[3] => array(5) {

["job_id"] => string(1) "1"
["job_name"] => string(18) "内资公司注册"
["work_name"] => string(12) "公司注册"
["flow_name"] => string(18) "办理三证合一"
["work_id"] => string(1) "1"

}
[4] => array(5) {

["job_id"] => string(1) "1"
["job_name"] => string(18) "内资公司注册"
["work_name"] => string(12) "公司注册"
["flow_name"] => string(12) "刻章备案"
["work_id"] => string(1) "1"

}

希望转换成这样的数组

array{
[0] => array(5) {

["job_id"] => string(1) "1"
["job_name"] => string(18) "内资公司注册"
["work_name"] => string(12) "公司注册"
["flow_name"] => string(12) "预约核名号---办理名称核准---预约受理号---办理三证合一----刻章备案"
["work_id"] => string(1) "1"

}

}

有大神朋友帮帮忙解决么 感激不尽

阅读 5.9k
5 个回答

整个比较粗但一目了然的方式,如下

$tmp = '';
foreach ($array as $key=>$val){
    $tmp .= $val['flow_name'].'---';
}
$tmp = rtrim($tmp, '---');

$new = $array[0];
$new[0]['flow_name'] = $tmp;

哈哈……

尽量使用PHP自带函数,效率能高点

$temp = $arr[0];
$temp['flow_name'] = join('---', array_column($arr, 'flow_name'));

这还不简单


// 先把flow_name全部拿出来

// 临时数组
$tmp_arr = [];
foreach($data as $value){
    // push到临时数组
    $tmp_arr[] = $value['flow_name'];
}

$flow_name = join('---', $tmp_arr[]);
$data = [
    [
        'flow_name' => '预约合约号'
    ],
    [
        'flow_name' => '办理名称核准'
    ],
    [
        'flow_name' => '预约受理号'
    ],
    [
        'flow_name' => '办理三证合一'
    ],
    [
        'flow_name' => '刻章备案'
    ]
];
$data = array_map(function ($item)
{
    return $item['flow_name'];
}, $data);
echo join('---',$data);
exit;

public function test()

{

    $arr = array(
        0 => array(
            "job_id" => "1",
            "job_name" => "内资公司注册",
            "work_name" => "公司注册",
            "flow_name" => "预约核名号",

        ),
        1 => array(
            "job_id" => "1",
            "job_name" => "内资公司注册",
            "work_name" => "公司注册",
            "flow_name" => "报名取号",

        ),
        2=> array(
            "job_id" => "1",
            "job_name" => "内资公司注册",
            "work_name" => "公司注册",
            "flow_name" => "缴费审核",

        ),
        3 => array(
            "job_id" => "1",
            "job_name" => "内资公司注册",
            "work_name" => "公司注册",
            "flow_name" => "刻章备案",

        ),
        4 => array(
            "job_id" => "1",
            "job_name" => "内资公司注册",
            "work_name" => "公司注册",
            "flow_name" => "领取证件",

        ),
        5 => array(
            "job_id" => "2",
            "job_name" => "内资公司注册",
            "work_name" => "公司注册",
            "flow_name" => "举报申诉",

        ),
        6 => array(
            "job_id" => "2",
            "job_name" => "内资公司注册",
            "work_name" => "公司注册",
            "flow_name" => "法庭听证",

        ),
    );
    $tmp=[];
    foreach ($arr as $k=>$v){
        $key = $v['job_id'];
        if (!in_array($key,array_column($tmp,'job_id'))){
            $tmp[]=$v;
        }
    }
    foreach ($arr as $k=>$v){
        foreach ($tmp as $key=>$value){
            if ($value['job_id']==$arr[$k]['job_id']&&$value['flow_name']!=$arr[$k]['flow_name']){
                $tmp[$key]['flow_name'].='---'.$arr[$k]['flow_name'];
            }
        }
    }
    print_r($tmp);die;
}

想了想,也许提问的人会有这需求
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题