Php 如何从嵌套数组生成表格数据

Php 如何从嵌套数组生成表格数据,php,arrays,nested,Php,Arrays,Nested,您好,iam正在制作考勤报告,我们拥有数组中的数据: Array ( [0] => Array ( [ActatekLog] => Array ( [id] => 1 [timeentry] => 2011-02-16 00:09:02 [eventID] => OUT

您好,iam正在制作考勤报告,我们拥有数组中的数据:

Array
(
    [0] => Array
        (
            [ActatekLog] => Array
                (
                    [id] => 1
                    [timeentry] => 2011-02-16 00:09:02
                    [eventID] => OUT
                    [terminalSN] => 00111DA08C8B
                    [jpegPhoto] => 
                )

        )

    [1] => Array
        (
            [ActatekLog] => Array
                (
                    [id] => 1
                    [timeentry] => 2011-02-16 00:09:12
                    [eventID] => IN
                    [terminalSN] => 00111DA08C8B
                    [jpegPhoto] => 
                )

        )

    [2] => Array
        (
            [ActatekLog] => Array
                (
                    [id] => 1
                    [timeentry] => 2011-02-16 00:11:31
                    [eventID] => OUT
                    [terminalSN] => 00111DA08C8B
                    [jpegPhoto] => 
                )

        )

    [3] => Array
        (
            [ActatekLog] => Array
                (
                    [id] => 1
                    [timeentry] => 2011-02-16 00:11:40
                    [eventID] => IN
                    [terminalSN] => 00111DA08C8B
                    [jpegPhoto] => 
                )

        )

    [4] => Array
        (
            [ActatekLog] => Array
                (
                    [id] => 1
                    [timeentry] => 2011-02-16 00:13:17
                    [eventID] => OUT
                    [terminalSN] => 00111DA08C8B
                    [jpegPhoto] => 
                )

        )

    [5] => Array
        (
            [ActatekLog] => Array
                (
                    [id] => 1
                    [timeentry] => 2011-02-16 00:13:21
                    [eventID] => IN
                    [terminalSN] => 00111DA08C8B
                    [jpegPhoto] => 
                )

        )

)
报告格式为:

Date       In Time     Out Time    Work Time
2011-02-16
我需要帮助显示在同一天的时间和时间在一行


请帮助

在这里,尽管数组中没有两个您想要在表中声明的值,但它仍然可以

<table>
    <tr>
        <th>Date</th>
        <th>Time In</th>
        <th>Time Out</th>
        <th>Work Time</th>
    </tr>
<?php foreach ($thisArr as $arr) : ?>
    <tr>
        <td><?php echo date('Y-m-d'); ?></td>
        <td><?php echo $arr['ActatekLog']['timeentry']; ?></td>
        <td><?php echo "no time out in the array??"; ?></td>
        <td><?php echo "you need to calculate this I assume"; ?></td>
    </tr>
<?php endforeach; ?>
</table>

日期
时间
时间到
工作时间

我首先将输出数组格式化一点

$arr = array();
foreach ( $result as $row ) {
    $arr[ $row[ 'terminalSN' ] ][ $row[ 'eventID' ] ] = $row;
}
那么输出应该更容易一些:

<table>
    <tr>
        <th>Date</th>
        <th>Time In</th>
        <th>Time Out</th>
        <th>Work Time</th>
    </tr>
    <?php foreach ( $arr as $key => $value ) : ?>
        <tr>
            <td><?php echo date( 'Y-m-d', strtotime( $value[ 'IN' ][ 'timeentry' ] ) ); ?></td>
            <td><?php echo date( 'H:i:s', strtotime( $value[ 'IN' ][ 'timeentry' ] ) ); ?></td>
            <td><?php echo date( 'H:i:s', strtotime( $value[ 'OUT' ][ 'timeentry' ] ) ); ?></td>
            <td><?php echo "Calculate based on out minus in. Pretty simple at this point." ?></td>
        </tr>
    <?php endforeach; ?>
</table>

日期
时间
时间到
工作时间

我使用的数据模型永远不会改变,而且您的数据已经按照您希望的方式进行了排序。因此,对于这样的数组:

$data = array
(
    0 => array
    (
        'ActateLog' => array
        (
            'id' => 1,
            'timeentry' => '2011-02-16 00:09:02',
            'eventID' => 'OUT',
            'terminalSN' => '00111DA08C8B',
            'jpegPhoto' => false
        )
    ),
    1 => array
    (
        'ActateLog' => array
        (
            'id' => 1,
            'timeentry' => '2011-02-16 00:09:12',
            'eventID' => 'IN',
            'terminalSN' => '00111DA08C8B',
            'jpegPhoto' => false
        )
    )
);
我创建了一个函数,它返回一个包含n/2行的数组,并且在同一行中包含IN和OUT

function processMyArray($data)
{
    $output = array();
    $lim = count($data);
    $i = $j = 0;

    for($i=0; $i<$lim; $i+=2, $j++)
    {
        $output[$j] = array
        (
            'date' => substr($data[$i]['ActateLog']['timeentry'], 0, 10),
            'IN' => substr($data[$i]['ActateLog']['timeentry'], 11),
            'OUT' => substr($data[$i+1]['ActateLog']['timeentry'], 11),
            'work_time' => strtotime($data[$i+1]['ActateLog']['timeentry']) - strtotime($data[$i]['ActateLog']['timeentry'])
        );
    }

    return $output;
}
函数processMyArray($data)
{
$output=array();
$lim=计数($data);
$i=$j=0;
对于($i=0;$i substr($data[$i]['ActateLog']['timeentry'],0,10),
'IN'=>substr($data[$i]['ActateLog']['timeentry'],11),
'OUT'=>substr($data[$i+1]['ActateLog']['timeentry'],11),
“工作时间”=>strotime($data[$i+1]['ActateLog']['timeentry'])-strotime($data[$i]['ActateLog']['timeentry']))
);
}
返回$output;
}

我只看到进入时间。你能再解释一下我们在阵列中看到了什么吗?谢谢你的回复Prikkeldraad,我希望以表格形式显示数据,如:日期|及时|超时|工作时间和同一日期的超时在一行中当我检查您的数组时,我发现所有条目都是在同一日期及其2011-02-16中生成的,有三个输入和三个输出。那么,你怎么能期望你能根据这些信息排一行呢?请发布您期望的返回数据。Prikkeldraad,此代码的问题是它不会在一行中显示“in time”和“out time”,而是在一行中显示“in time”,在下一行中显示“out time”。非常感谢您的帮助,但我们需要改进它,我试图提取列表中的数据,但没有use@Tanvier我不是Prikkeldraad,使用您的数组,我发布的代码将在同一行中为您嵌套的每个数组打印时间输入和时间输出。。。。所以我不明白你在说什么汉克斯·吉尔登你的解决方案很好,但是还有一个小故障,请帮我解决这个问题。我们需要为所需日期创建考勤报告,如2011-05-01~2011-05-25。在条件匹配通过日期循环后,我们需要在函数processMyArray()中传递一个数组,如` for($i=0;$i