如何拆分动态数组并将其应用到表中

时间:2014-11-15 08:43:04

标签: php arrays

需要帮助,Myscript生成动态数组,输出如下:

Array
(
    [0] => A, B, C, D  
    [1] => 15,20,24,19
    [2] => X,Y,Z,W
)

Array
(
    [0] => A, B, C, D
    [1] => 15,20,24,19
)

其中有时是2个主要索引或更多。

如何将它们应用到HTML表中,结果如下:

------------------
Field 1 | Field 2 |
------------------
A       | 15      |
------------------
B       | 20      |
------------------
C       | 24      |
------------------
D       | 19      |
------------------

其中字段是跟随主索引的数量。

非常感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

如果它们是逗号分隔的字符串,那么您需要先将它们映射并爆炸。然后你可以继续对它们进行分组并将它们排成一行,这样它们就可以更容易循环。例如:

$array = ['A,B,C,D', '15,20,24,19', 'X,Y,Z,W'];
// explode comma delimited
$pieces = array_map(function($piece){
    return explode(',', $piece);
}, $array);
// group them
$group = array(); $i = 0;
while(true) {
    foreach ($pieces as &$piece) {
        $group[$i][] = array_shift($piece);
    }
    $i++;
    $last = end($pieces);
    if(empty($last)) break;
}
// then just echo them in a table
echo '<table cellpadding="10">';
echo '<tr>';
for($x = 1, $size = count($array); $x <= $size; $x++) echo '<td>Field ' . $x . '</td>';
echo '</tr>';
foreach ($group as $value) {
    echo '<tr>';
    foreach($value as $v) {
        echo '<td>' . $v . '</td>';
    }
    echo '</tr>';
}
echo '</table>';

Sample Out

答案 1 :(得分:0)

在字符串的每个子数组上调用var source3 = Observable.Create<StreamReader>(observer => { FileStream readFile = File.OpenRead(filePath); StreamReader reader = new StreamReader(readFile); observer.OnNext(reader); observer.OnCompleted(); return new CompositeDisposable(readFile, reader); }); 后,您无需再进行任何准备工作,只需使用explode()访问列数据。

代码:(Demo

array_column()

输出:

$array=['A, B, C, D', '15,20,24,19', 'X,Y,Z,W'];  // differing delimiters: comma vs comma-space
$array=array_map(function($s){return preg_split('/, ?/',$s);},$array);

echo "<table>";
    echo "<tr>";
        for($x=1,$column_count=sizeof($array); $x<=$column_count; ++$x){
            echo "<th>Field$x</th>";
        }
    echo "</tr>";
    foreach($array[0] as $i=>$v){
        echo "<tr><td>",implode("</td><td>",array_column($array,$i)),"</td></tr>";
    }
echo "</table>";