从现有数组创建一个新的多维数组(php)

时间:2014-08-07 13:22:39

标签: php arrays multidimensional-array

我需要从另一个已经存在的数组创建一个数组,从而形成一个新的数据结构。

此时我已经有了新的数组

http://phpfiddle.org/main/code/x0gn-1ikz

问题是:

在10:00:00 - 15:00:00的新阵列应该有3个记录:

Array
(
    [10:00:00 - 15:00:00] => Array
        (
            [2014-08-03] => Jonh
            [2014-08-04] => Jonh
            [2014-08-04] => Lewis
        )

但是你可以在fidle中看到只有两个apear,我相信这是一个简单的伎俩,但是我的脑袋已经吹了,“问题”在日期和时间相等的记录中......

我可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您的问题是重复密钥。对于一个实例,您尝试将jonhlewis同时推送到[10:00:00 - 15:00:00][2014-08-03]的索引。您需要另一个数组,因此结构将是一个3D数组。

一个看似合理的结构,

Array
(
    [10:00:00 - 15:00:00] => Array
        (
            [2014-08-03] => Array 
                (
                  [0] => Jonh
                )
            [2014-08-04] => Array
                (
                  [0] => Lewis
                  [1] => Jonh
                 )
        )

答案 1 :(得分:0)

将代码的第114行更改为:

$final[$time][$value[2]][] = $value[1];

创建名称数组。然后会print_r($final)打印:

Array
(
    [10:00:00 - 15:00:00] => Array
        (
            [2014-08-03] => Array
                (
                    [0] => Jonh
                )

            [2014-08-04] => Array
                (
                    [0] => Jonh
                    [1] => Lewis
                )

        )

这就是你想要的吗?

假设上面显示的数组是$ table_array。现在要在列中写入名称,请使用以下内容:

echo '<td>'.$table_array['10:00:00 - 15:00:00']['04-08-2014'].'</td>';
相反,你会写一些类似的东西:

$names = '';
foreach ($table_array['10:00:00 - 15:00:00']['04-08-2014'] as $name)
    $names .= $name . ', ';
$names = rtrim($names, ', ');
echo '<td>'.$names.'</td>';

如果您采用不同的方式,请发布您的代码,以便我知道如何帮助您