Eli*_*Eli 5 php mysql arrays activerecord codeigniter
我有这个数组 month $monthsNum = ['1','2','3','4','5','6','7','8','9','10','11','12'];
,我希望在我的数据库列month_uploaded 中将其与 1-12 之间的值进行比较。我希望它计数实例的数量$ monthsNum发生在列数组值month_uploaded并将其存储在数组$ count_uploads .Zero计数被放置在阵列$ count_uploads零值。我该怎么做?非常感谢您的帮助。谢谢你。下面是我的代码片段。
function count_uploads_perMonth(){
$monthsNum = ['1','2','3','4','5','6','7','8','9','10','11','12'];
$query = $this->db->select("*")
->from($this->table_par)
->where_in("month_uploaded",$monthsNum)
->get();
foreach( $query->result() as $row ){
$count_uploads[] = count($row->month_uploaded);
}
var_dump($count_uploads);
}
Run Code Online (Sandbox Code Playgroud)
输出:错误
array (size=5)
0 => int 1
1 => int 1
2 => int 1
3 => int 1
4 => int 1
Run Code Online (Sandbox Code Playgroud)
期望输出:
array (size=12)
0 => 0 or null
1 => 0 or null
2 => 0 or null
3 => 0 or null
4 => 0 or null
5 => 1
6 => 3
7 => 0 or null
8 => 0 or null
9 => 0 or null
10 => 0 or null
11 => 0 or null
Run Code Online (Sandbox Code Playgroud)
这更接近,只需要为每个数组键获取正确的计数值
function count_uploads_perMonth(){
$monthsNum = array('1','2','3','4','5','6','7','8','9','10','11','12');
$this->db->select("month_uploaded as cnt");
$this->db->where_in('month_uploaded',$monthsNum);
$this->db->group_by('month_uploaded');
$query = $this->db->get($this->table_par);
$count_uploads = array_fill(1, 12, 0);
foreach( $query->result() as $row ){
$count_uploads[$row->cnt] = $row->cnt;
}
var_dump($count_uploads);
}
Run Code Online (Sandbox Code Playgroud)
输出:
array (size=12)
1 => int 0
2 => int 0
3 => int 0
4 => int 0
5 => int 0
6 => string '6' (length=1) --- value should be 1 and length is 1
7 => string '7' (length=1) --- value should be 4 and length is 4
8 => int 0
9 => int 0
10 => int 0
11 => int 0
12 => int 0
Run Code Online (Sandbox Code Playgroud)
我不确定,但我想你在这里需要的是array_count_values
。您只需使用查询生成一组结果->get()->result_array();
$array = range(1,12);
$result = array(7,7,7,6);
$final = array_count_values($result);
$final_array = array();
foreach($array as $value){
$final_array[$value] = array_key_exists($value ,$final) ? $final[$value] : 0;
}
print_r($final_array);
Run Code Online (Sandbox Code Playgroud)
编辑:
根据您的结果数组,您可以将数组更新为
$arr = array(0 => array ('month_uploaded' => '7'), 1 => array ('month_uploaded' => '7'), 2 => array ('month_uploaded' => '7'), 3 => array ('month_uploaded' => '7'), 4 => array ('month_uploaded' => '6' ));
$result = array_count_values(array_column($arr,'month_uploaded'));
$final_array = array();
foreach($array as $value){
$final_array[$value] = array_key_exists($value ,$result) ? $result[$value] : 0;
}
print_r($final_array);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
805 次 |
最近记录: |