Laravel 根据公共值链接数组

Laravel 根据公共值链接数组,laravel,Laravel,我有一些类似的数组 0:[id:'1',部门:'xyz',日期:'2019年10月10日',时间:'12:50'] 1:[id:'1',部门:'xyz',日期:'2019年10月11日',时间:'10:30'] 2:[id:'2',部门:'abc',日期:'09-09-2019',时间:'09:50'] 3:[id:'2',部门:'abc',日期:'07-07-2019',时间:'03:20'] 我希望它们根据id和部门合并 因此,0和1数组将合并在一起,输出应该类似于 0:[id:'1',部门

我有一些类似的数组

0:[id:'1',部门:'xyz',日期:'2019年10月10日',时间:'12:50']

1:[id:'1',部门:'xyz',日期:'2019年10月11日',时间:'10:30']

2:[id:'2',部门:'abc',日期:'09-09-2019',时间:'09:50']

3:[id:'2',部门:'abc',日期:'07-07-2019',时间:'03:20']

我希望它们根据
id
部门合并

因此,
0
1
数组将合并在一起,输出应该类似于

0:[id:'1',部门:'xyz',[[date:'10-10-2019',time:'12:50',[date:'11-10-2019',time:'10:30']]

2
3
数组将合并在一起,并且输出应该类似于

1:[id:'2',部门:'abc',[[date:'09-09-2019',time:'09:50',[date:'07-07-2019',time:'03:20']]

我怎么做呢?

试试这个

 $input = [
0 =>['id' => '1','department' => 'xyz','date' => '10-10-2019','time' => '12:50'],
1 => ['id' => '1','department' => 'xyz','date' => '11-10-2019','time' => '10:30'],
2 => ['id' =>  '2','department' => 'abc','date' => '09-09-2019','time' => '09:50'],
3 =>['id' => '2','department' => 'abc','date' => '07-07-2019','time' => '03:20']];
$output = [];
$id_array = [];
foreach ($input as $values) 
{
  $id_array [] = $values['id'];
}
$unique_id_array = array_unique($id_array);
foreach($input as $key => $in)
{
  if(array_key_exists($key,$unique_id_array))
  {
    $output[] = [
            'department' => $in['department'],
            'id' => $in['id']
            ];
  }
}
foreach($input as $in)
{
foreach($output as $key => $out)
    {
      if($out['id'] == $in['id'] && $out['department'] == $in['department'])
      {
          $output[$key]['date_time'][] = ['date' =>$in['date'],'time' => $in['time']];
      }

    }
}
print_r($output);die();
输出将是

Array
(
[0] => Array
    (
        [department] => xyz
        [id] => 1
        [date_time] => Array
            (
                [0] => Array
                    (
                        [date] => 10-10-2019
                        [time] => 12:50
                    )

                [1] => Array
                    (
                        [date] => 11-10-2019
                        [time] => 10:30
                    )

            )

    )

[1] => Array
    (
        [department] => abc
        [id] => 2
        [date_time] => Array
            (
                [0] => Array
                    (
                        [date] => 09-09-2019
                        [time] => 09:50
                    )

                [1] => Array
                    (
                        [date] => 07-07-2019
                        [time] => 03:20
                    )

            )

    )

)
试试这个

 $input = [
0 =>['id' => '1','department' => 'xyz','date' => '10-10-2019','time' => '12:50'],
1 => ['id' => '1','department' => 'xyz','date' => '11-10-2019','time' => '10:30'],
2 => ['id' =>  '2','department' => 'abc','date' => '09-09-2019','time' => '09:50'],
3 =>['id' => '2','department' => 'abc','date' => '07-07-2019','time' => '03:20']];
$output = [];
$id_array = [];
foreach ($input as $values) 
{
  $id_array [] = $values['id'];
}
$unique_id_array = array_unique($id_array);
foreach($input as $key => $in)
{
  if(array_key_exists($key,$unique_id_array))
  {
    $output[] = [
            'department' => $in['department'],
            'id' => $in['id']
            ];
  }
}
foreach($input as $in)
{
foreach($output as $key => $out)
    {
      if($out['id'] == $in['id'] && $out['department'] == $in['department'])
      {
          $output[$key]['date_time'][] = ['date' =>$in['date'],'time' => $in['time']];
      }

    }
}
print_r($output);die();
输出将是

Array
(
[0] => Array
    (
        [department] => xyz
        [id] => 1
        [date_time] => Array
            (
                [0] => Array
                    (
                        [date] => 10-10-2019
                        [time] => 12:50
                    )

                [1] => Array
                    (
                        [date] => 11-10-2019
                        [time] => 10:30
                    )

            )

    )

[1] => Array
    (
        [department] => abc
        [id] => 2
        [date_time] => Array
            (
                [0] => Array
                    (
                        [date] => 09-09-2019
                        [time] => 09:50
                    )

                [1] => Array
                    (
                        [date] => 07-07-2019
                        [time] => 03:20
                    )

            )

    )

)

您好,我认为这将很好地工作,这是实现输出的简单和最好的方法。 我用你提供的数据在我的系统中尝试了很多代码,试试这个 我希望这也能对你起作用

<?php 
    $inputArr =   [0 =>['id' => '1','department' => 'xyz','date' => '10-10-2019','time' => '12:50'],1 => ['id' => '1','department' => 'xyz','date' => '11-10-2019','time' => '10:30'],2 => ['id' =>  '2','department' => 'abc','date' => '09-09-2019','time' => '09:50'],3 =>['id' => '2','department' => 'abc','date' => '07-07-2019','time' => '03:20']];
    print_r($inputArr);
    $second_copy = $inputArr;
    foreach ($inputArr as $key => $single) 
    {
        $goalArr[$single['id']] = getRow($single['id'],$single['department'],$second_copy);
    }
    function getRow($id,$department,$second_copy)
    {
        $returnArr['id'] = $id;
        $returnArr['department'] = $department;
        foreach ($second_copy as $key => $single)
        {
            if($id == $single['id'] && $department == $single['department'])
            {
                $returnArr['date'][] = $single['date'];
                $returnArr['time'][] = $single['time'];
            }
        }
        return $returnArr;
    }
    echo "<br>Output is: <br>";
    print_r($goalArr);
?>

您好,我认为这会很好地工作,而且这是实现输出的简单而最好的方法。 我用你提供的数据在我的系统中尝试了很多代码,试试这个 我希望这也能对你起作用

<?php 
    $inputArr =   [0 =>['id' => '1','department' => 'xyz','date' => '10-10-2019','time' => '12:50'],1 => ['id' => '1','department' => 'xyz','date' => '11-10-2019','time' => '10:30'],2 => ['id' =>  '2','department' => 'abc','date' => '09-09-2019','time' => '09:50'],3 =>['id' => '2','department' => 'abc','date' => '07-07-2019','time' => '03:20']];
    print_r($inputArr);
    $second_copy = $inputArr;
    foreach ($inputArr as $key => $single) 
    {
        $goalArr[$single['id']] = getRow($single['id'],$single['department'],$second_copy);
    }
    function getRow($id,$department,$second_copy)
    {
        $returnArr['id'] = $id;
        $returnArr['department'] = $department;
        foreach ($second_copy as $key => $single)
        {
            if($id == $single['id'] && $department == $single['department'])
            {
                $returnArr['date'][] = $single['date'];
                $returnArr['time'][] = $single['time'];
            }
        }
        return $returnArr;
    }
    echo "<br>Output is: <br>";
    print_r($goalArr);
?>


No它不会像您所说的那样返回输出现在我如何根据id和部门访问每天和时间?使用
foreach
$output
上循环,并基于
id
department
您可以选择日期和时间。
foreach($output as$out){if($out['id'='1'&$out['department']=='xyz'){foreach($out['date\u time']作为$date\u time){echo$date\u time['date'];echo$date\u time['time'];}}}
No它不会像您所说的那样返回输出现在我如何根据id和部门访问每天和时间?使用
foreach
$output
上循环,并基于
id
department
您可以选择日期和时间。
foreach($output as$out){if($out['id'='1'&$out['department']=='xyz'){foreach($out['date\u time']作为$date\u time){echo$date\u time['date'];echo$date\u time['time'];}}}}