如何自动回显所有列值

时间:2018-07-07 19:45:04

标签: php

例如,我有一个attributes table,并且可以添加无限属性。添加新列时使用ALTER TABLE,插入属性值时使用UPDATE。所有这些列都必须显示在表格中。但是,在显示新添加的列值方面有一些困难。

这是静态列值回显的样子:

public function showAllUsers(){
    $x = $this->getAllUsers();
    foreach ($x as $data) {
      echo '<tr>';
        echo '<th>'. $data['id'].'</th>';
        echo '<td>'.$data['user'].'</td>';
        echo '<td>'.$data['email'].'</td>';
        echo '<td>'.$data['age'].'</td>';
      echo '</tr>';
    }
  } 

它回显我指定的数据库的值。但是我需要一个循环,该循环将回显任何新添加的值,因此上面的静态回声方法不起作用。

这是我到目前为止提出的:

public function showAllUsers(){
    $x = $this->getAllUsers();
    foreach ($x as $data) {

      echo '<tr>';
        print_r( '<th>'. $data.'</th>');
      echo '</tr>';
    }
  }

它仅显示一个Notice: Array to string conversion并回显一个值为0的标签。我如何回显一行中的所有内容?

2 个答案:

答案 0 :(得分:0)

尝试一下:

public function showAllUsers()
{
    $x = $this->getAllUsers();
    echo '<tr>';
    foreach (array_keys($x[0]) as $field) {
        echo '<th>'. $field.'</th>';
    }
    echo '</tr>';
    foreach ($x as $data) {
        echo '<tr>';
        foreach ($data as $val) {
            echo '<td>'. $val.'</td>';
        }
        echo '</tr>';
    }
} 

答案 1 :(得分:0)

您可以使用html标记内嵌$ data数组。
Implode接受所有数组值,并将它们与“胶水”连接起来并使其成为字符串。

public class Product
    {
    public string id { get; set; }
    public string category_id { get; set; }
    public string store_id { get; set; }
    public string name { get; set; }
    public string price { get; set; }
    public string description { get; set; }
    public string image { get; set; }
    public string active { get; set; }

}