Peki başlık berbat. Ama burada ben yapmaya çalışıyorum budur.
I have a foreach loop that is already pulling all the rows from a mysql db table using a db object style query in a function. That function is grabbing all fields and setting it up in an array ex foreach ($blahs as $blah => $blah_data) That now allows me to populate the page with fields for each row that occurs. So that is working.
Ancak, ben de ileri gitmek gerekiyor ve bu içinde şimdi bu satırları bir ilişki kimliği (kullanıcı kimliği gibi) ve her bir oluşum için tarih aralığında ve bu tabanlı olsun, hours_worked gibi bazı özel alanları toplamı. Ben farklı bir işleve tarih aralığı değişkenler ve user_id geçer bir sorgu çalıştıran foreach içinde başka foreach sahip açısından düşünüyordum.
Şimdi ne olur sadece satırın ilk geçtiği çeker ve hours_worked alan bulunuyor ve toplam olarak çıktılar olmasıdır. Nasıl user_id dayalı bir bireysel kullanıcının satırları dolaşmak için php olsun, ve çıkış için belli bir alanı toplam musun?
Örneğin User_id 1 4 veri satırları ve her satır dizi (satır başına saat) değerleri 1,4,9,2 2 8 veri satırları ve her satır dizi değerleri 4,2,4,4 sahip olan user_id vardır vardır , 1,1,4,8. Aksine sadece kullanıcı 2 kullanıcı 1 için "1". Veya "4" gösteren daha. Ben 16 toplam hours_worked kullanıcı 1'in satır, ve 28 toplam hours_worked kullanıcı 2'nin satırları gerekir.
Nasıl ben zaten bu verileri almak için çalışan bir foreach döngüsü içinde bu konuda gidiyorsun?
Ya ben yanlış tüm hakkında gidiyorum?
Ben çıkış bir aylık rapor yazdırmak için bir veri içine biçimlendirilmiş ediliyor belirtmeyi unutmayın vermedi. Ama aynı zamanda bu yaklaşık 80% cehennemden daha kötü bir yerden miras gaddarlık kodudur. Onlar bunu değiştirmek istemiyorum çünkü Yani, bütün bu etrafında çalışmak zorunda ve burada gerçekten detay sonsuza senaryoyu beni alacaktı.
Her neyse, burada yapmaya çalışıyorum ne genel bir fikir vermek bazı kod snipit olduğunu. Unutulmaması gereken temel şeyler geliyor veriler zaten kırık ve alanları $ user_id geliyor gibi aynı adı değişkenler atanır ki 'user_id' ve $ created_date 'created_date' olduğunu
Ben ilk satıra normalde umarım gerçekleşti saat örneğin çalışmış olacağını ne gelen olurdu bazı veri özlüyor böylece dış foreach en az bir kez çalıştırmak kadar göründüğü gibi çalışmadığı iki konu, 1 çalıştırıyorum. Ve 2, ben yerine bir gerçekleşti toplamından daha 'hours_worked' yalnızca ilk değer almak yani sadece her bir olayda ilk satırını yük gibi görünüyor.
$users = Users::getAllUsers();
foreach ($users as $user => $find_user)
{
$user_data = $find_user['user_obj']; //this is so all users can be listed on the datagrid at all times rather than only show up if date range/user_id matches. I have the query function assigning variables to the array items. (ex. $name prints the name at this point if I call it in the html table)
$tech_data = Maintenance::getTechDataByDateRangeAndUser($month, $year, $techs->uid ); //unlike the above that gets all, this one gets data by type "techs" in the query and then by specific user_id within a month year date range.
//all I want to do at this point is tally the 'hworked' field (pre-assigned as $hworked in the query function) for all rows occurring for each tech.
foreach ($tech_data as $data => $find_tech_data)
{
$worked_hours_total = 0;
$tech_occurrence = $find_tech_data['hused'];
$tech_occurrence_hours = $tech_occurrence;
$worked_hours_total += doubleval($tech_occurrence_hours);
}
$tech_hours = $worked_hours_total;
}
?>