php - 将每个 foreach 对象的结果放入它们自己的列中
问题描述
我有一组对象,我正在获取使用 foreach 的值:
foreach($type as $value){
$value->Type;
};
如果我ECHO
这样做,我会得到如下结果:
type1
type2
type3
etc.
mysql是
$type = $wpdb->get_results($wpdb->prepare("SELECT Type FROM mytablename"));
伟大的!现在由于它们是对象,如果我想计算类型的每个变体并将其显示在表格中,我该怎么做?
我尝试添加类似SELECT COUNT(Type), type FROM mytablename
或类似的东西,然后使用我的FOREACH
循环,但这是无效的。
我知道如何在 PHP 中构建一个表,ECHO '<table>' .... '</table>'
但不知道我在TD
每个变量中使用什么来实现这一点。
期望的结果:
+++++++++++++++++++++++++++++++++++++++
+ type1 +++ type2 +++ type3 +++ type4 +
+ 2 +++ 3 +++ 1 +++ 5 +
+++++++++++++++++++++++++++++++++++++++
解决方案
我们可以使用几个内置的数组函数来获得您想要的结果。通过使用array_map,我们可以得到每个对象的属性Type。然后我们可以使用 array_count_values 来获取每种类型的频率。
<?php
$frequencies = array_count_values(
array_map(
function ($v) {
return $v->Type;
},
$type
)
);
ksort($frequencies, SORT_NATURAL);
?>
最后,可以使用 PHP 来呈现表格,使用两个 array_keys 将返回唯一类型。而 array_values 将返回匹配的频率。
<table>
<tr>
<?php foreach (array_keys($frequencies) as $type) : ?>
<th><?= $type ?></th>
<?php endforeach; ?>
</tr>
<tr>
<?php foreach (array_values($frequencies) as $frequency) : ?>
<td><?= $frequency ?></td>
<?php endforeach; ?>
</tr>
</table>
推荐阅读
- d3.js - 从 Mike Bosktok 打开多系列折线图时出错
- performance - 在性能方面哪个更好;保活或 CDN
- java - 归并排序算法——java中的实现
- web - 如何查找网页的所有非链接子站点?
- python - pygame python 库中的 pygame.event.wait() 占用 100%CPU
- google-apps-script - 将关联数组转换为数值以在 Apps 脚本中写入工作表
- java - android旋转的TextView继承父级的宽度
- python - sqlite3.OperationalError:靠近“VALUES”:语法错误
- r - 在包含排序组的数据框中分配一个新列
- java - Kafka-Streams 使用 JSON 值加入 2 个主题 | 背压机制?