我有一个以下格式的数组:
$var = Array
(
[0] => Array
(
[name] => Harry
)
[1] => Array
(
[name] => Wayne
)
)
Array
(
[0] => Array
(
[name] => Wayne
)
我想内爆这个数组,这样我就可以得到它的格式:
Harry,Wayne
Wayne
根据我的尝试,我得到了它的格式:
Harry,Wayne
Harry,Wayne,Wayne
我尝试过的(并不重要,因为它是错误的)
foreach($var as $a){
foreach($a as $b){
}$c[] = $b
}
$imp = implode(',',$c);
$var 是使用 fetch_array 从数据库中获取的。
$this->db->select('name');
$this->db->where('id', $Id);
$this->db->from('info');
$row = $this->db->get();
$var = $row->result_array();
其中 $Id 是包含某些用户 ID 的数组。
foreach($var as $a)
{
unset($temp);
foreach($a as $b)
{
$temp[] = $b['name'];
}
$c[] = implode(",", $temp);
}
// output all the names
foreach ($c as $csvNames)
{
echo $csvNames;
}
试试这个。
foreach($var as $a){
$m = '';
$delim = '';
foreach($a as $k){
$m .= $delim . $k['name'];
$delim = ',';
}
$c[] = $m;
}
foreach($c as $d){
echo $d;
}
请忽略那些硬编码的循环。有一个递归函数。
array_walk_recursive($var, create_function('$val, $key', 'array_push($obj, $val);'), &$output);
echo implode(",",$output);
你的问题说
其中 $Id 是包含某些用户 ID 的数组。
嗯,CodeIgniter 的查询生成器方法
where()
并不是设计用于以您编写脚本的方式接收数组。 我只能假设您正在重复访问数据库——这既是不好的做法,也是可以避免的。
要从数据库查询中返回列值的平面数组,请在结果集上使用
where_in()
,然后使用 array_column()
。
内爆步骤很可能是表示层的工作,因此请推迟视图层的该过程。
return array_column(
$this->db
->where_in('id', $ids)
->get('name')
->result(),
'name'
);
这将通过一次数据库访问返回符合条件的行中所有名称的平面数组。