как сделать табличные данные из вложенного массива - PullRequest
0 голосов
/ 23 мая 2011

Привет, я работаю над отчетом о посещаемости, у нас есть данные в массиве:

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

Мне нужна помощь в отображении времени и времени в одном ряду для того же дня.

Пожалуйста, помогите

Ответы [ 3 ]

1 голос
/ 23 мая 2011

Я бы начал с небольшого форматирования выходного массива.

$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>
0 голосов
/ 23 мая 2011

Я использую вашу модель данных, которая никогда не меняется, и ваши данные уже отсортированы так, как вы хотите, чтобы они были отсортированы.Итак, для такого массива:

$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;
}
0 голосов
/ 23 мая 2011

Вот и все, что мы сделаем, хотя у вас нет двух значений в массиве, которые вы указали в своей таблице.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...