如何使用PHP将子数组值呈现到表的单元格中?

时间:2014-08-06 20:04:24

标签: php arrays html-table

我已经搜索过了,但遗憾的是我找不到任何令人满意的解决方案。

我有一些包含一些子数组的数组:

Array (
    [0] => Array
        ([0] => AAAA
         [1] => BBBB
         [2] => CCCC
         [3] => DDDD
         [4] => EEEE
         [5] => FFFF
         [6] => GGGG)
    [1] => Array
        ([0] => hhhh
         [1] => iiii
         [2] => jjjj
         [3] => kkkk
         [4] => llll
         [5] => mmmm
         [6] => nnnn)

    ...

    [999] => Array
        ([0] => OOOO
         [1] => PPPP
         [2] => QQQQ
         [3] => RRRR
         [4] => SSSS
         [5] => TTTT
         [6] => UUUU)
)

然后使用以下代码,我可以将其呈现在表格中:

$table = '<table border=1>';
    // Select values of the array to create table.
    foreach($array as $key => $row){
        $table .= '<tr>';

        foreach($row as $value){
            $table .= '
                <td>'.$value.'</td>
            ';
        }
        $table .= '</tr>';
    }
$table .= '</table>';

echo $table;

图形结果如下:

AAAA | BBBB | CCCC | DDDD | EEEE | FFFF | GGGG
hhhh | iiii | jjjj | kkkk | llll | mmmm | nnnn
...
OOOO | PPPP | QQQQ | RRRR | SSSS | TTTT | UUUU

但是,由于我想操纵表中的一些单元格,例如在其中一些单元格中插入一个链接,我正在寻找一种方法可以让我这样做:

        foreach($??? ??? $???){
            $table .= '
                <td>'.$value[0].'</td>
                <td>'.$value[1].'</td>
                <td>'.$value[2].'</td>
                <td>'.$value[3].'</td>
                <td>'.$value[4].'</td>
                <td><a href="#">'.$value[5].'</a></td>
            ';
        }

任何人都知道如何才能做到这一点?

2 个答案:

答案 0 :(得分:1)

你可以这样做

//...
foreach($row as $key => $value) {
    if ($key === 5) {
        $value = '<a href="#">'.$value.'</a>';
    }

    $table .= '
        <td>'.$value.'</td>
    ';
}
//...

foreach构造可以将当前元素的键分配给变量。

答案 1 :(得分:0)

这实际上取决于您生成链接的因素。如果它只是每个数组中的第6个值,那么@ undefined的解决方案将起作用。如果它是您手动控制的东西,也许这样的方法可以帮到您:

首先,定义您想要链接为键控数组的元素:

$array = array(
    array('AAAA', array('text' => 'BBBB', 'href' => 'http://stackoverflow.com'), 'CCCC', 'DDDD', 'EEEE', 'FFFF', 'GGGG'),
    array('hhhh', 'iiii', 'jjjj', array('text' => 'kkkk', 'href' => 'http://stackoverflow.com'), 'llll', 'mmmm', 'nnnn')
);

然后,当您处理数组中的每个元素时,使用is_array检查它是否是一个数组本身,并以不同的方式处理它:

$table = '<table border=1>';
// Select values of the array to create table.
foreach($array as $key => $row){
    $table .= '<tr>';

    foreach($row as $value){
        // PROCESS ARRAY AS A LINK
        if(is_array($value)) {
            $value = '<a href="' . $value['href'] . '">' . $value['text'] . '</a>';
        }

        $table .= '
            <td>'.$value.'</td>
        ';
    }
    $table .= '</tr>';
}
$table .= '</table>';

echo $table;