#codeigniter #postgresql
#codeigniter #postgresql
Вопрос:
Я хочу подсчитать массив данных, полученных с помощью postgresql, используя codeigniter.Я использовал цикл foreach и использовал count ($ row[‘zero’]) для подсчета, но это приводит только к 1. пожалуйста, направьте меня.
Вот мой контроллер
public function indicators($pcode = '', $dcode = '') {
$this->data['p_code'] = $pcode;
$this->data['d_code'] = $dcode;
$this->data['pcode'] = $this->employment_model->get_project();
$this->data['attend_household'] = $this->employment_model->household_absent_all($dcode);
var_dump($this->data['attend_household']);
die();
foreach($this->data['attend_household'] as $row){
if($row['zero']>0){
$this->data['zerroo']=count($row['zero']);
}
}
if (count($this->data['attend_household']) > 0) {
$this->data['attend_household'] = $this->data['attend_household'][0];
}
// var_dump($this->data);
$this->load->view("employment_info", $this->data);
}
Вот моя модель
function household_absent_all($dcode) {
$dcode_query = "";
if ($dcode != '') {
if ($dcode == 'all') {
$dcode_query = "";
} else {
$dcode_query = "where t.dcode='$dcode'";
}
}
$sql = "select (100-(sum(days_worked)/sum(days_offered))*100) as zero,regno,sum(days_offered) as days_offered,sum(days_worked) as days_worked
from(
select*
from assets.tblprojects a
join(
select pcode as project,hh_jobcard_no
from employment.work_group_member
)wg on a.pcode=wg.project
join(
select regno,at.days_offered,at.days_worked
from employment.registration_hh_member
join(
select pcode as a_pcode,hh_jobcard_no as jobcard,mem_id,
sum((shift_1*0.5) (shift_2*0.5)) as days_worked,count(adate) as days_offered
from employment.attendence
group by a_pcode,jobcard,mem_id
)at on regno=at.jobcard and s_no=at.mem_id
)rhm on wg.hh_jobcard_no=rhm.regno
)t
group by regno
$dcode_query
";
$result = $this->db->query($sql)->result_array();
return $result;
}
Комментарии:
1. вы хотите подсчитать все записи из таблицы
2. нет, я хочу посчитать только ноль в соответствии с условиями
3. это означает, что вы хотите посчитать только эту строку $[‘zero’]
Ответ №1:
попробуйте вот так
$i=0;
foreach($this->data['attend_household'] as $row){
if($row['zero']>0){
$i ;
}
}
$this->data['zerroo']=$i;
Ответ №2:
как насчет использования num_rows() в качестве счетчика.
if($num = $result->num_rows() >=1){
$result = array('result_set'=>$result->result_array(),'result_count'=>$num);
}else{
$result = array('result_set'=>FALSE,'result_count'=>FALSE);
}
return $result;
затем на вашем контроллере вы можете использовать его как $variable['result_count']
для подсчета, так и $variable['result_set']
для результатов данных.
Комментарии:
1. У меня есть массив, подобный этому array 0 => array ‘zero’ => string ‘11.32075471698113207500’ (длина= 23) ‘regno’ => string ‘KEP-63013-25’ (длина = 12) ‘days_offered’ => string ’53’ (длина= 2) ‘days_worked’ => string ‘47.0’ (длина= 4)
2. 1 => массив ‘ноль’ => строка ‘0.79365079365079365100’ (длина =22) ‘regno’ => строка ‘KEP-64004-118’ (длина =13) ‘days_offered’ => строка ’63’ (длина=2) ‘days_worked’ => строка ‘62.5’ (длина= 4) … и я хочу, чтобы, если значение нуля больше 0, подсчет результата