PHP如何将关联数组转换为由stdClass对象组成的索引数组
PHP 关联数组转目标结构实现方案
你之前的写法将所有职位键和数值分别存为两个独立的子数组,和要求的「每组职位与对应数值封装为独立stdClass对象」的结构完全不匹配,所以达不到预期效果。可参考以下两种实现方式:
方法1:foreach 循环实现(可读性最高,推荐在CodeIgniter 3中使用)
// 假设你的原关联数组变量为 $counts $jabatans = []; foreach ($counts as $jabatan => $total) { $item = new stdClass(); $item->jabatan = $jabatan; $item->total = $total; $jabatans[] = $item; }
方法2:array_map 短写法(代码更简洁)
$jabatans = array_map(function ($jabatan, $total) { $item = new stdClass(); $item->jabatan = $jabatan; $item->total = $total; return $item; }, array_keys($counts), array_values($counts));
处理完成后得到的$jabatans就是你需要的索引数组结构,直接传递给CodeIgniter的视图层即可适配CanvasJs的数据源要求。如果CanvasJs需要默认的label、y字段,只需要把上述代码中的jabatan改为label、total改为y即可直接使用,无需额外转换。
内容的提问来源于stack exchange,提问作者Reza Aprillia
相关产品推荐
相关产品推荐

