![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 24.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
Mam taką tabelkę ze zmiennymi:
W sumie 8 pozycji (do litery "H") Problem w tym, że na końcu muszę dodać te zmienne (wiersz 9 i dalsze w przedstawionym kodzie) pod warunkiem, że... i tutaj zaczynają się schody. Zmienna $wiersz2['Pow_Uzyt_A'] ma być brana pod uwagę w dodawaniu tylko wtedy, kiedy zmienna $wiersz2['Status_A'] = 'A' . I analogicznie wartość ze zmiennej $wiersz2['Pow_Uzyt_B'] będzie dodawana, jeżeli zmienna $wiersz2['Status_B'] = 'B' i tak dalej. W bazie pole w kolumnach "Status_[A...H]" po prostu zawiera tylko jedną literę (A...H) lub jest puste. Jak to zrobić? Ten post edytował Therminus 24.08.2022, 13:23:50 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
@Salvation troszkę się przyczepię do tej funkcji.
Mnie uczono na studiach, że funkcja napisana dobrze poza oczywistymi przypadkami ma być nienaruszalna. A co jeśli kodującemu przyjdzie ochota rozszerzyć zakres dajmy na to do K? Tablica ta powinna być argumentem funkcji. Po co też dodatkowa funkcja mb_strtoupper? Nie można od razu tablicy z dużymi literami zdefiniować? Sorki, że się czepiam, ale jeśli chodzi o kod to troche pedantyczny jestem a że wywodzę się z C to operatory trójargumentowe jakoś same mi się piszą :) Kod function summary(array $chars, array $row): int
{ $sum = 0; foreach($chars as $char) { $status = (string)($row['Status_' . $char] ?? ''); $userPower = (int)($row['Pow_Uzyt_' . $char] ?? 0); $sum += ($status === $char) ? $userPower : 0; } return $sum; } $chars = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']; $array = [ 'Status_A' => 'A', 'Pow_Uzyt_A' => 10, 'Status_B' => 'B', 'Pow_Uzyt_B' => 25, 'Status_C' => '', 'Pow_Uzyt_C' => 100, ]; echo summary($chars, $array); Ten post edytował gino 27.08.2022, 06:48:14 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Mnie uczono na studiach, że funkcja napisana dobrze poza oczywistymi przypadkami ma być nienaruszalna. Też kończyłem studia i takich głupot nie słyszałem na wykłądach. A co jeśli kodującemu przyjdzie ochota rozszerzyć zakres dajmy na to do K? Tablica ta powinna być argumentem funkcji. Jak dla mnie, niepotrzebne rozszerzenie o argument. Sama tablica powinna być "zamknięta" w funkcji, bo to jest baza funkcji. + Nie programuje się na zapas. Jest to jedna z zasad dobrych praktyk (IMG:style_emoticons/default/wink.gif) Po co też dodatkowa funkcja mb_strtoupper? Nie można od razu tablicy z dużymi literami zdefiniować? Można. Szybciej mi jednak było użyć małych liter i skorzystać z funkcji (IMG:style_emoticons/default/biggrin.gif) - z założenia też wychodzę, że to co "przyjmę" jest z małych liter. Równie dobrze możesz użyć stringa i iterować po tym :shrug: Rozwiązanie zależy od autora (IMG:style_emoticons/default/wink.gif) A żeby było prawilniej i z zachowaniem typowania od początku, to $row powinno być VO, ale wiadomo jak to jest z "projektami do szuflady" i nauką (IMG:style_emoticons/default/wink.gif) Ten post edytował Salvation 28.08.2022, 22:40:16 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 12:37 |