Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中构建表的理想方法_Php - Fatal编程技术网

PHP中构建表的理想方法

PHP中构建表的理想方法,php,Php,作为一名实习生,我意识到我花了大量时间从PHP中的sql查询构建和操作表。我当前的方法是使用两个foreach循环: foreach($query as $record){ foreach($record as $field => $value){ *Things that need to be done on each field-value pair* } *Things that need to be done on each row* }

作为一名实习生,我意识到我花了大量时间从PHP中的sql查询构建和操作表。我当前的方法是使用两个foreach循环:

foreach($query as $record){
    foreach($record as $field => $value){
        *Things that need to be done on each field-value pair*
    }
    *Things that need to be done on each row*
}
有更好的方法吗

此外,我倾向于将数据打包成一个~分隔的列表,并将其存储在服务器中,这是一种不好的做法吗


我宁愿放一些代码供审查,但我不想冒险暴露公司的内部代码。

Foreach循环是迭代数据的最佳方式。如果你想让你的代码更漂亮一点,试着使用三元版本

<?php foreach($query as $record) : ?>
   <?php foreach($record as $field => $value) : ?>
        *Things that need to be done on each field-value pair*
    <?php endforeach; ?>
    *Things that need to be done on each row*
<?php endforeach; ?>

*在每个字段值对上需要执行的操作*
*每行需要做的事情*
此外,正如上面的评论中提到的,在数据库中存储~separated数据时,会丢失很多功能。如果必须这样做,可以尝试存储序列化对象而不是分隔字符串。可以通过多种方式操纵对象,例如和

$myArray=array();
$myArray['User1']['book']='Pride and prediction';
$myArray['User1']['favorites']='Water Skining';
$myArray['User2']['book']='Mansfield Park';
$myArray['User2']['favorites']=array('skateboarding'、'surfing'、'running');
$myArray['description']='人们喜欢的东西';
回声';
$table = new HTMLTable();
$table->setData($data);
echo $table->toHTML();
打印(json编码($myArray))//这将把你的数组转换成db的字符串 回声';
$table = new HTMLTable();
$table->setData($data);
echo $table->toHTML();
回声';
$table = new HTMLTable();
$table->setData($data);
echo $table->toHTML();
$myArrayString=json_encode($myArray); 打印(json解码($myArrayString))//这将把db字符串转换为对象进行操作 回声';
$table = new HTMLTable();
$table->setData($data);
echo $table->toHTML();

没有内置的方法从查询结果生成HTML表。如果您发现自己在一遍又一遍地编写这种代码,那么创建一个可重用的类或库将是一个很好的选择。例如:


上面的代码不是工作代码,只是一个示例,说明了如何创建可重用代码,而不是多次重复同一个表构建代码。

我倾向于使用
,而
循环使用
mysql\u fetch.
函数之一。但本质上和你做的是一样的


至于分开的名单。我强烈建议将数据保存在单独的DB字段中,而不是像那样打包。只需为每个这样的包创建一个新表。

您可能不应该在数据库服务器中存储逗号分隔的数据,因为您将失去该服务器的所有优势,如查询等。在数据库中存储分隔列表通常也是您违反的一个指示,您应该尝试重新构造表以满足需求。为什么需要第二个循环?我看不出这有什么好处,除非你选择了数量可变的字段。您是否意识到如果数据是关联数组,您应该能够使用
$record['field']
访问数据?嘿,如果你真的想让别人来检查你的代码,我完全不带偏见地推荐这个网站:有时候我不得不打印出字段和值的名称来形成一个简单的表,或者用字段名做其他事情。这就是为什么通常使用第二个循环。另外,我会在那里发布一些更详细的代码,但遗憾的是,我不拥有它,所以我宁愿不拥有它。嗯,在数据库中使用序列化字符串有什么好处?我确实需要不时地将标记的值存储在数据库中,这就是我开始使用~list的方式。我喜欢使用序列化的json对象,因为您可以轻松地将字符串转换为php和javascript中的json对象,这在发出ajax请求时非常好。此外,使用逗号分隔的主要好处是层次数据。我将更新我的答案,为您提供一个简单的关联数组示例。