在PHP中获取所需的输出

在PHP中获取所需的输出,php,arrays,sorting,format,Php,Arrays,Sorting,Format,我有以下格式的数据 $data = Array ( [0] => Array ( [cdt] => 2016-01-01 [name] => Harish [hour] => 8.5 ) [1] => Array ( [cdt] => 2016-01-01 [name] => Preeti [hour] => 8 )

我有以下格式的数据

$data = 
 Array
(
[0] => Array
    (
        [cdt] => 2016-01-01
        [name] => Harish
        [hour] => 8.5
    )

[1] => Array
    (
        [cdt] => 2016-01-01
        [name] => Preeti
        [hour] => 8
    )

[2] => Array
    (
        [cdt] => 2016-01-01
        [name] => Sunit
        [hour] => 9
    )

[3] => Array
    (
        [cdt] => 2016-01-01
        [name] => Prabhakar
        [hour] => 8
    )

[4] => Array
    (
        [cdt] => 2016-01-02
        [name] => Prabhakar
        [hour] => 2
    )

[5] => Array
    (
        [cdt] => 2016-01-04
        [name] => Preeti
        [hour] => 8
    )

[6] => Array
    (
        [cdt] => 2016-01-04
        [name] => Sunit
        [hour] => 9
    )

[7] => Array
    (
        [cdt] => 2016-01-04
        [name] => Harish
        [hour] => 9.5
    )

[8] => Array
    (
        [cdt] => 2016-01-04
        [name] => Prabhakar
        [hour] => 10
    )

[9] => Array
    (
        [cdt] => 2016-01-05
        [name] => Preeti
        [hour] => 10
    )

[10] => Array
    (
        [cdt] => 2016-01-05
        [name] => Sunit
        [hour] => 8
    )

[11] => Array
    (
        [cdt] => 2016-01-05
        [name] => Harish
        [hour] => 9
    )

[12] => Array
    (
        [cdt] => 2016-01-05
        [name] => Prabhakar
        [hour] => 9
    )
)
我希望它是这种格式

Array
(
  [0] => 2016-01-01, Harish: 8.5, Preeti: 8, Sunit: 9, Prabhakar: 8
  [1] => 2016-01-02, Prabhakar: 2
  [2] => 2016-01-04, Preeti: 8, Sunit: 9, Harish: 9.5, Prabhakar: 10
  [3] => 2016-01-05, Preeti: 10, Sunit: 8, Harish: 9, Prabhakar: 9
)
我试过一些循环,但没有用。我不擅长foreach循环,但我怀疑它能否解决问题

下面是我尝试过的代码

$k=0;
for($i = 0; $i < sizeOf($uniqueDates); $i++)
{
    $chartData[$i] = 'y: '.$data[$i]['cdt'].', ';
    for($j = $k; $j < Sizeof($data); $j++)
    {
        if($uniqueDates[$i] == $data[$j]['cdt'])
        {
            $chartData[$i] .= $data[$j]['name'].': '.$data[$j]['hour'].', ';
        }

    }
    $k++;

}
$k=0;
对于($i=0;$i

在$uniqueDates中,我采用了所有唯一的日期,$data是包含上述格式数据的数组

这看起来很直截了当。你所要做的就是组织你的条目,然后根据你想要的输出格式化它们

看看这个简单的例子:

<?php

$data = [
    [
        'cdt' => '2016-01-01',
        'name' => 'Harish',
        'hour' => '10'
    ],
    [
        'cdt' => '2016-01-01',
        'name' => 'Preeti',
        'hour' => '8'
    ],
    [
        'cdt' => '2016-01-01',
        'name' => 'Sunit',
        'hour' => '9'
    ],
    [
        'cdt' => '2016-01-01',
        'name' => 'Prabhakar',
        'hour' => '8'
    ],
    [
        'cdt' => '2016-01-02',
        'name' => 'Prabhakar',
        'hour' => '2'
    ],
    [
        'cdt' => '2016-01-04',
        'name' => 'Preeti',
        'hour' => '8'
    ],
    [
        'cdt' => '2016-01-04',
        'name' => 'Sunit',
        'hour' => '9'
    ],
    [
        'cdt' => '2016-01-04',
        'name' => 'Harish',
        'hour' => '9.5'
    ],
    [
        'cdt' => '2016-01-04',
        'name' => 'Prabhakar',
        'hour' => '10'
    ],
    [
        'cdt' => '2016-01-05',
        'name' => 'Preeti',
        'hour' => '10'
    ],
    [
        'cdt' => '2016-01-05',
        'name' => 'Sunit',
        'hour' => '8'
    ],
    [
        'cdt' => '2016-01-05',
        'name' => 'Harish',
        'hour' => '9'
    ],
    [
        'cdt' => '2016-01-05',
        'name' => 'Prabhakar',
        'hour' => '9'
    ]
];

$catalog = [];
foreach ($data as $entry) {
    $catalog[$entry['cdt']][] = sprintf('%s: %s', $entry['name'], $entry['hour']);
}

foreach ($catalog as $cdt => $entries) {
    $output[] = sprintf('%s, %s', $cdt, implode(', ', $entries));
}

print_r($output);

请包括您尝试过的代码以及问题所在。可能重复的代码可能会有所帮助。@Sunithandra很高兴我能提供帮助!期待您的投票或接受答案。;-)
Array
(
    [0] => 2016-01-01, Harish: 10, Preeti: 8, Sunit: 9, Prabhakar: 8
    [1] => 2016-01-02, Prabhakar: 2
    [2] => 2016-01-04, Preeti: 8, Sunit: 9, Harish: 9.5, Prabhakar: 10
    [3] => 2016-01-05, Preeti: 10, Sunit: 8, Harish: 9, Prabhakar: 9
)