2011-01-20 28 views
22

PHP配列からHTMLテーブルを作成するにはどうすればよいですか? というタイトルのテーブル、 ''の値 ''は 'です。PHP配列からHTMLテーブルを作成するには?

$shop = array(
    array("rose", 1.25, 15), 
    array("daisy", 0.75, 25), 
    array("orchid", 1.15, 7), 
); 
+3

これは、http://stackoverflow.com/questions/4746079/how-do-i-create-table-with-this-php-arrayとまったく同じ質問です。質問は投稿を二重にしないでください。あなた自身の(そして他人の)時間を無駄にする。 –

+3

がマージされました。そして、私は再び合併しないように祈っています! – Will

+0

このスレッドはここで答えています[ここをクリック](https://stackoverflow.com/questions/4746079/how-to-create-a-html-table-from-a-php-array/47068295#47068295) – Delickate

答えて

2

2つのforeachループを作成し、配列を繰り返します。 値を印刷し、その周囲にHTMLテーブルタグを追加します。

10
<table> 
    <tr> 
     <td>title</td> 
     <td>price</td> 
     <td>number</td> 
    </tr> 
    <? foreach ($shop as $row) : ?> 
    <tr> 
     <td><? echo $row[0]; ?></td> 
     <td><? echo $row[1]; ?></td> 
     <td><? echo $row[2]; ?></td> 
    </tr> 
    <? endforeach; ?> 
    </table> 
+5

what'sテンプレートタグの問題? @HalfCrazed –

+1

ショートタグはすべてのシステムで利用できません – DarkMukke

+0

gj! –

0
<?php 

echo "<table> 
<tr> 
<th>title</th> 
<th>price</th> 
<th>number</th> 
</tr>"; 
for ($i=0; $i<count($shop, 0); $i++) 
{ 
    echo '<tr>'; 
    for ($j=0; $j<3; $j++) 
    { 
     echo '<td>'.$shop[$i][$j].'</td>'; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 

あなたはそれを最適化することができますが、それは行う必要があります。

58

ちょうど、このように配列にデータをフェッチする方が良いでしょう:

<?php 
$shop = array(array("title"=>"rose", "price"=>1.25 , "number"=>15), 
       array("title"=>"daisy", "price"=>0.75 , "number"=>25), 
       array("title"=>"orchid", "price"=>1.15 , "number"=>7) 
      ); 
?> 

そして後でデータベース内のテーブルに複数の列を追加する場合であってもうまくいくはずです。このような何かを、行います。

<?php if (count($shop) > 0): ?> 
<table> 
    <thead> 
    <tr> 
     <th><?php echo implode('</th><th>', array_keys(current($shop))); ?></th> 
    </tr> 
    </thead> 
    <tbody> 
<?php foreach ($shop as $row): array_map('htmlentities', $row); ?> 
    <tr> 
     <td><?php echo implode('</td><td>', $row); ?></td> 
    </tr> 
<?php endforeach; ?> 
    </tbody> 
</table> 
<?php endif; ?> 
+1

テーブルを作成するスマートな方法。私はあなたのコードに基づいて便利な関数を作成しました。 Thx – sdespont

+2

array_map()は配列を返し、$ rowは参照によって渡されないので、行は本質的に何もしません、いいえ? – syaz

+0

htmlentitiesマップの編集を提出 – McX

2
echo '<table><tr><th>Title</th><th>Price</th><th>Number</th></tr>'; 
foreach($shop as $id => $item) { 
    echo '<tr><td>'.$item[0].'</td><td>'.$item[1].'</td><td>'.$item[2].'</td></tr>'; 
} 
echo '</table>'; 
0

あなたは、配列$shopを反復処理し、このようにその値をエコーするために、各反復で配列のいずれかを取得するためにforeachを使用することができます:ここにある

echo '<table>'; 
echo '<tr><th>title</td><td>price</td><td>number</td></tr>'; 
foreach ($shop as $item) { 
    echo '<tr>'; 
    echo '<td>'.$item[0].'</td>'; 
    echo '<td>'.$item[1].'</td>'; 
    echo '<td>'.$item[2].'</td>'; 
    ehoc '</tr>'; 
} 
echo '</table>'; 
1
<table> 
     <thead> 
     <tr><th>title</th><th>price><th>number</th></tr> 
     </thead> 
     <tbody> 
<?php 
    foreach ($shop as $row) { 
    echo '<tr>'; 
    foreach ($row as $item) { 
     echo "<td>{$item}</td>"; 
    } 
    echo '</tr>'; 
    } 
?> 
     </tbody> 
    </table> 
4
echo "<table><tr><th>Title</th><th>Price</th><th>Number</th></tr>"; 
foreach($shop as $v){ 
    echo "<tr>"; 
    foreach($v as $vv){ 
     echo "<td>{$vv}</td>"; 
    } 
    echo "<tr>"; 
} 
echo "</table>"; 
0

私の答え。

function array2Html($array, $table = true) 
{ 
    $out = ''; 
    foreach ($array as $key => $value) { 
     if (is_array($value)) { 
      if (!isset($tableHeader)) { 
       $tableHeader = 
        '<th>' . 
        implode('</th><th>', array_keys($value)) . 
        '</th>'; 
      } 
      array_keys($value); 
      $out .= '<tr>'; 
      $out .= array2Html($value, false); 
      $out .= '</tr>'; 
     } else { 
      $out .= "<td>$value</td>"; 
     } 
    } 

    if ($table) { 
     return '<table>' . $tableHeader . $out . '</table>'; 
    } else { 
     return $out; 
    } 
} 

ただし、テーブルのヘッダーは配列の一部でなければなりません。これはデータベースの場合にはかなり一般的です。例えば

$shop = array(
    array(
     'title' => 'rose', 
     'price' => 1.25, 
     'number' => 15, 
    ), 
    array(
     'title' => 'daisy', 
     'price' => 0.75, 
     'number' => 25, 
    ), 
    array(
     'title' => 'orchid', 
     'price' => 1.15, 
     'number' => 7, 
    ), 
); 

print arrayToHtml($shop); 

はそれがお役に立てば幸いです。)

+0

htmlspecialcharsがあなたのstrをエンコードするのを忘れてしまったので、データをエンコードする必要があります。 –

26

ここでは私のもの:

<?php 
    function build_table($array){ 
    // start table 
    $html = '<table>'; 
    // header row 
    $html .= '<tr>'; 
    foreach($array[0] as $key=>$value){ 
      $html .= '<th>' . htmlspecialchars($key) . '</th>'; 
     } 
    $html .= '</tr>'; 

    // data rows 
    foreach($array as $key=>$value){ 
     $html .= '<tr>'; 
     foreach($value as $key2=>$value2){ 
      $html .= '<td>' . htmlspecialchars($value2) . '</td>'; 
     } 
     $html .= '</tr>'; 
    } 

    // finish table and return it 

    $html .= '</table>'; 
    return $html; 
} 

$array = array(
    array('first'=>'tom', 'last'=>'smith', 'email'=>'[email protected]', 'company'=>'example ltd'), 
    array('first'=>'hugh', 'last'=>'blogs', 'email'=>'[email protected]', 'company'=>'example ltd'), 
    array('first'=>'steph', 'last'=>'brown', 'email'=>'[email protected]', 'company'=>'example ltd') 
); 

echo build_table($array); 
?> 
1

あなたはこの機能を使用することができます。

function insertTable($myTableArrayBody) { 
    $x = 0; 
    $y = 0; 
    $seTableStr = '<table><tbody>'; 
    while (isset($myTableArrayBody[$y][$x])) { 
     $seTableStr .= '<tr>'; 
     while (isset($myTableArrayBody[$y][$x])) { 
      $seTableStr .= '<td>' . $myTableArrayBody[$y][$x] . '</td>'; 
      $x++; 
     } 
     $seTableStr .= '</tr>'; 
     $x = 0; 
     $y++; 
    } 
    $seTableStr .= '</tbody></table>'; 
    return $seTableStr; 
} 
-1
<table id="usuarios"> 
     <tbody> 
      <tr> 
       <th>Nombre</th> 
       <th>Apellido</th> 
       <th>Email</th> 
       <th>Institución educativa</th> 
       <th>Fecha Registro</th> 
      </tr> 
      <?php 
      if ($result->num_rows > 0) {// output data of each row 
      while($row = $result->fetch_assoc()) { 
       echo "<tr><td>".$row["Nombre"]."</td>"; 
       echo "<td>".$row["Apellido"]."</td>"; 
       echo "<td>".$row["Email"]."</td>"; 
       echo "<td>".$row["NombreInsEdu"]."</td>"; 
       echo "<td>".$row["FechaRegistro"]."</td></tr>"; 
      } 
      } else { 
       echo "0 results"; 
       } 
       $conn->close(); 
      ?> 
     </tbody> 
    </table> 
+0

質問は 'PHP配列からHTMLテーブルを作成するにはどうすればいいですか? 'title'、 'price'、 'number'のような見出しのテーブル。この回答には 'title'、 'price'、 'number'はありません。テーブルのデータは配列ではありません。これは全く質問に答えていません。 – Pang

3
あなたはまた、

例array_reduceまだ使用することができます

体の前にヘッダ情報と同じように、セットアップ二番目のパラメータ$myTableArrayHeaderをすることができ、テーブルヘッダを追加してくださいするには
$tbody = array_reduce($rows, function($a, $b){return $a.="<tr><td>".implode("</td><td>",$b)."</td></tr>";}); 
$thead = "<tr><th>" . implode("</th><th>", array_keys($rows[0])) . "</th></tr>"; 

echo "<table>\n$thead\n$tbody\n</table>"; 
1

PHPコード:

$multiarray = array (

    array("name"=>"Argishti", "surname"=>"Yeghiazaryan"), 
    array("name"=>"Armen", "surname"=>"Mkhitaryan"), 
    array("name"=>"Arshak", "surname"=>"Aghabekyan"), 

); 

$count = 0; 

foreach ($multiarray as $arrays){ 
    $count++; 
    echo "<table>" ;    

    echo "<span>table $count</span>"; 
    echo "<tr>"; 
    foreach ($arrays as $names => $surnames){ 

     echo "<th>$names</th>"; 
     echo "<td>$surnames</td>"; 

    } 
    echo "</tr>"; 
    echo "</table>"; 
} 

CSS:テーブルへ

table { 
    font-family: arial, sans-serif; 
    border-collapse: collapse; 
    width: 100%; 
} 

td, th { 
    border: 1px solid #dddddd; 
    text-align: left; 
    padding: 8px;`` 
} 
0

アレイ。 divへの配列。 テーブルへのJSON。 divへのJSON。

すべてこのクラスをうまく処理しています。 Click here to get a class

使用方法は?

ただ、あなたがテーブルに配列を変換したい場合は

$obj->array_object = array("AAA" => "1111", 
        "BBB" => "2222", 
        "CCC" => array("CCC-1" => "123", 
           "CCC-2" => array("CCC-2222-A" => "CA2", 
                "CCC-2222=B" => "CB2" 
               ) 
           ) 

       ); 

を変換する配列を作成し

$obj = new Arrayinto(); 

を取得し、オブジェクト。これを呼んでください。

$result = $obj->process_table(); 

Arrayをdivに変換する場合は、これを呼んでください。

$result = $obj->process_div(); 

あなたはJSON

$obj->json_string = '{ 
      "AAA":"11111", 
      "BBB":"22222", 
      "CCC":[ 
        { 
         "CCC-1":"123" 
        }, 
        { 
         "CCC-2":"456" 
        } 
        ] 
     } 
     '; 

を持っている場合は、希望this'dヘルプこの

$result = $obj->process_json('div'); 

OR

$result = $obj->process_json('table'); 

のようなテーブル/ divのに変換することができたとしましょう君は。

関連する問題