[PHP]Funkcja zwracająca tablicę danych, jak zmodyfikować funkcje aby otrzymać kilka tablic |
[PHP]Funkcja zwracająca tablicę danych, jak zmodyfikować funkcje aby otrzymać kilka tablic |
8.04.2021, 12:14:32
Post
#21
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) |
No to poza tym, że mam teraz w jednej zmiennej $intro kilka wcześniej rozbitych zmiennych group, to wylądowałem na tym samym co na początku... Poczekam na reakcję nospor ale obawiam się Ten post edytował pela222 8.04.2021, 12:32:38 |
|
|
8.04.2021, 13:43:01
Post
#22
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) |
Po mojemu to tak:
Kod private $groups = array(); public function __construct(DocumentData $documentData = null) { if (!$documentData) { $documentData = new DocumentData(); } $this->groups= array ( 'common1' => array ( 'name' => '? Wprowadzenie', 'elements'=> array ( 'multiText' => array( 'type' => 'textMulti', 'label' => 'Wprowadzenie', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getIntroData($documentData) ), ), ), 'textMultiList' => array ( 'name' => '? Potrzeby i cele', 'elements'=> array ( 'needs' => array( 'type' => 'textMultiList', 'label' => 'Poszukujecie/Poszukujesz ubezpieczenia, które', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getNeedsData($documentData) ), ), ), 'common2' => array ( 'name' => '? Sytuacja Osobista', 'elements'=> array ( 'multiText' => array( 'type' => 'textMulti', 'label' => 'Osobista', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getPersonData($documentData) ), ), ), 'common3' => array ( 'name' => '? Sytuacja Finansowa', 'elements'=> array ( 'multiText' => array( 'type' => 'textMulti', 'label' => 'Finansowa', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getFinancialData($documentData, $additionalData) ), ), ), ); foreach ($documentData['policies'] as $type => $policieType) { foreach ($policieType as $policy) { // dla typu TerLifeIns if ($type == 'TerLifIns' || $type == 'MorIns') { $termlife = array ( 'common4' => array ( 'name' => '? Rekomendacja Life Term + Mortgage' .$count, 'elements'=> array ( 'multiText' => array( 'type' => 'textMultiList', 'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationTerLifInsData($documentData)[1] ), 'multiText1' => array( 'type' => 'textMultiList', 'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy:', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationTerLifInsData($documentData)[2] ), 'multiText2' => array( 'type' => 'textMultiList', 'label' => 'Opis Ubezpieczyciela', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationTerLifInsData($documentData)[3] ), ), ), ); $this->groups = array_merge($this->groups, $termlife); } // dla Hive if ($type == 'PerAcc' || $type =='AccSicAndHos' || $type == 'MedCas') { $hive = array ( 'common6' => array ( 'name' => '? Rekomendacja Hive', 'elements'=> array ( 'multiText' => array( 'type' => 'textMultiList', 'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationHiveData($documentData)[1] ), 'multiText2' => array( 'type' => 'textMultiList', 'label' => 'Opis ubezpieczyciela', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationHiveData($documentData)[3] ), ), ), ); $this->groups = array_merge($this->groups, $hive); } // dla Whole of Life if ($type == 'WOL') { $wol = array ( 'common7' => array ( 'name' => '? Rekomendacja Whole of Life', 'elements'=> array ( 'multiText' => array( 'type' => 'textMultiList', 'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationWOL($documentData)[1] ), 'multiText1' => array( 'type' => 'textMultiList', 'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy:', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationWOL($documentData)[2] ), 'multiText2' => array( 'type' => 'textMultiList', 'label' => 'Opis Ubezpieczyciela', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationWOL($documentData)[3] ), ), ), ); $this->groups = array_merge($this->groups, $wol); } // // dla MCPC if ($type == 'MulClaProCov') { $mcpc = array ( 'common8' => array ( 'name' => '? Rekomendacja Multi-claim', 'elements'=> array ( 'multiText' => array( 'type' => 'textMultiList', 'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationMCPC($documentData)[1] ), 'multiText1' => array( 'type' => 'textMultiList', 'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationMCPC($documentData)[2] ), 'multiText2' => array( 'type' => 'textMultiList', 'label' => 'Opis Ubezpieczyciela', 'optional' => true, // false -> bez checkbox 'partitions' => $this->getRecomendationMCPC($documentData)[3] ), ), ), ); $this->groups = array_merge($this->groups, $mpc); } } } } public function getGroups() { return $this->groups; } edit poprawka literówek :0 Ten post edytował gino 8.04.2021, 13:45:25 |
|
|
9.04.2021, 13:52:17
Post
#23
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) |
No ma to sens zdecydowanie większy niż to co ja napłodziłem.
I pytanie ostateczne Jak iterować jeśli istnieje wiecej niż jedna polisa o tym samym typie. Czyli chodzi o to żeby uzyskać taką strukturę:
Na razie, żeby to osiągnąć to kombinuję w teń deseń:
dostaje zmienne common4_X równe ilości polis danego typu...Jeszcze to muszę przetrawić.. ====EDYCJA ==== Ok. Chyba ogarnąłem ... Nie wiem czy to jest prawidłowo i zgodnie ze "sztuką" ale działa ... po pierwszych testach. Jutro rano wrzucę kod i poproszę o ocenienie czy to nie jest karkołomne ... bo coś mi się wydaję że za dużo razy puszczam pętle ... No ale to już jutro. ===EDYCJA 09/04 14:45 === To jest ostateczna wersja kodu. Uzysłem funkcjonalność o jaką mi chodziło. Ale będę wdzięczny za krytyczne uwagi.
Aby skrócić trochę kod wyciąłem cześć i ograniczyłem się do jednego typu polisy. PS. Zostawiłem jeszcze wykomentowany fragment kodu, gdzie poprzez foreach iterowałem po tablicy z wszystkimi typami polis.
Tak jak wyżej. Dziękuję za podpowiedzi czy krytyczne słowa związane z możliwym usprawnieniem. Szczególnie dziękuje koledze @nospor oraz @gino. Ten post edytował pela222 8.04.2021, 20:42:48 |
|
|
9.04.2021, 14:12:48
Post
#24
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Strasznie ciezko sie czyta ten kod. Pewnie gino ogarnia to lepiej
Ale to co mi sieteraz rzuca w oczy to nie $count = count($policies); for($n=0; $n<$count; $n++){ a poprostu foreach ($policies as $n=> $policy) { -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 12:56 |