Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Funkcja zwracająca tablicę danych, jak zmodyfikować funkcje aby otrzymać kilka tablic
pela222
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

Ostrzeżenie: (0%)
-----


Cześć,
postaram się jak najlepiej opisać co chcę osiągnąć.
Poniżej jak to jest teraz:

  1. //Rekomendacja
  2. private function getRecomendationWOL($documentData) {
  3. $policies = $documentData['policies']['WOL'];
  4.  
  5. $recomend = array();
  6. $count = count($policies);
  7. for($n=0; $n<$count; $n++){
  8. //--- START grupa 1 ---
  9. $recomend[] = array('Podstawowe informacje ('.$policies[$n]['lifeInsured'].') ... '.$policies[$n]['company'].': ');
  10. $recomend[] = array('Podstawowe cd. '.$documentData['primary']['firstName'].' to ?'.$policies[$n]['primary']['lifeCover'].'. '.$policies[$n]['DOC']['lifedis'].'');
  11. $recomend[] = array('Podstawowe cd. '.$policies[$n]['DOC']['lifechanges']);
  12. //--- START grupa 2 ---
  13. $recomend[] = array('Informacje GRUPA 2.');
  14. $recomend[] = array('Informacje GRUPA 2 cd. .');
  15. //--- START grupa 3 ---
  16. $recomend[] = array('Dodatkowo informacje GRUPA 3');
  17. foreach ($policies[$n]['DOC']['companydis'] as $value) {
  18. if(!is_array($value)){
  19. $recomend[] = array($value);
  20. }
  21. }
  22. }
  23. return $recomend;
  24. }


A potem wywołuję to tak i w ten sposób tworze formularz html:

  1. public function __construct(DocumentData $documentData = null) {
  2.  
  3. if (!$documentData) {
  4. $documentData = new DocumentData();
  5. }
  6. $documentData = $documentData->getData();
  7.  
  8. //throw new Exception('<pre>'.print_r($documentData['policies'],1). '</pre>');
  9.  
  10. $this->group1 = array (
  11. 'common1' => array (
  12. 'name' => 'Opis',
  13. 'elements'=> array (
  14. 'multiText' => array(
  15. 'type' => 'textMulti',
  16. 'label' => 'Wprowadzenie',
  17. 'optional' => true, // false -> bez checkbox
  18. 'partitions' => $this->getRecomendationWOL($documentData)
  19. ),
  20. ),
  21. ),
  22. );

No i jest ok i to działa.
Teraz wywołując $this->getRecomendationWOL otrzymuję
  1. [common1] => Array
  2. (
  3. [multiText] => Array
  4. (
  5. [0] => Podstawowe informacje (dane osoby) ... (dane firmy):
  6. [1] => Podstawowe cd.
  7. [2] => Podstawowe cd.
  8. [3] => Informacje GRUPA 2.
  9. [4] => Informacje GRUPA 2 cd.
  10. [5] => Dodatkowo informacje GRUPA 3
  11. [6] => Dodatkowo informacje GRUPA 3 cd.
  12.  


A to co chciałbym uzyskać to możliwość wywołania osobno danych dla Grupy 1 / Grupy 2 / Grupy 3

  1. $this->group1 = array (
  2. 'common1 => array (
  3. 'name' => 'Opis1',
  4. 'elements'=> array (
  5. 'multiText' => array(
  6. 'type' => 'textMulti',
  7. 'label' => 'GROUPA 1',
  8. 'optional' => true, // false -> bez checkbox
  9. 'partitions' => $this->getRecomendationWOL1($documentData)
  10. ),
  11. 'multiText1' => array(
  12. 'type' => 'textMulti',
  13. 'label' => 'GRUPA 2',
  14. 'optional' => true, // false -> bez checkbox
  15. 'partitions' => $this->RecomendationWOL2($documentData)
  16. ),
  17. 'multiText2' => array(
  18. 'type' => 'textMulti',
  19. 'label' => 'GRUPA 3',
  20. 'optional' => true, // false -> bez checkbox
  21. 'partitions' => $this->RecomendationWOL3($documentData)
  22. ),
  23. ),
  24. ),
  25. );


Dziękuję za informacje jak to osiągnąć i za wyrozumiałość.

Domyślam się że muszę zmodyfikować:
return $recomend;
na coś w stylu:
public function getValues() {
return array (
'group1' => $this->recomend[1][],
'group2' => $this->recomend[2][],
'group3' => $this->recomend[3][]
);
}

No ale nie potrafię sobie sam z tym poradzić...
Dziękuję jak zawsze za wyrozumiałość.

Temat do zamknięcia

wystarczyło dane w tablicy zapisać jako
  1. $recomend[group1][] = array('Podstawowe informacje ('.$policies[$n]['lifeInsured'].') ... '.$policies[$n]['company'].': ');
  2. ...
  3. $recomend[group2][] = array('Informacje GRUPA 2.');


a potem wywołać funkcje poprzez
  1. $this->getRecomendationWOL($documentData)[group1]
  2. ...
  3. $this->getRecomendationWOL($documentData)[group2]


Ten post edytował pela222 26.03.2021, 13:42:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pela222
post
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 17.04.2013

Ostrzeżenie: (0%)
-----


Jeśli o to chodziło to nie rozumiem co to wnosi...
  1. //
  2. private $groups = array();
  3.  
  4. public function __construct(DocumentData $documentData = null) {
  5.  
  6. if (!$documentData) {
  7. $documentData = new DocumentData();
  8. }
  9.  
  10. // pobieranie danych dodatkowych zapisanych w bazie
  11. $dataReader = new AdditionalDataReader();
  12. $additionalData = $dataReader->read();
  13.  
  14. $documentData = $documentData->getData();
  15.  
  16. //throw new Exception('<pre>'.print_r($documentData['policies'],1). '</pre>');
  17.  
  18.  
  19. $this->groups = array (
  20.  
  21. 'common1' => array (
  22. 'name' => '1. Wprowadzenie',
  23. 'elements'=> array (
  24. 'multiText' => array(
  25. 'type' => 'textMulti',
  26. 'label' => 'Wprowadzenie',
  27. 'optional' => true, // false -> bez checkbox
  28. 'partitions' => $this->getIntroData($documentData)
  29. ),
  30. ),
  31. ),
  32. 'textMultiList' => array (
  33. 'name' => '2. Potrzeby i cele',
  34. 'elements'=> array (
  35. 'needs' => array(
  36. 'type' => 'textMultiList',
  37. 'label' => 'Poszukujecie/Poszukujesz ubezpieczenia, które',
  38. 'optional' => true, // false -> bez checkbox
  39. 'partitions' => $this->getNeedsData($documentData)
  40. ),
  41. ),
  42. ),
  43. 'common2' => array (
  44. 'name' => '3. Sytuacja Osobista',
  45. 'elements'=> array (
  46. 'multiText' => array(
  47. 'type' => 'textMulti',
  48. 'label' => 'Osobista',
  49. 'optional' => true, // false -> bez checkbox
  50. 'partitions' => $this->getPersonData($documentData)
  51. ),
  52. ),
  53. ),
  54. 'common3' => array (
  55. 'name' => '4. Sytuacja Finansowa',
  56. 'elements'=> array (
  57. 'multiText' => array(
  58. 'type' => 'textMulti',
  59. 'label' => 'Finansowa',
  60. 'optional' => true, // false -> bez checkbox
  61. 'partitions' => $this->getFinancialData($documentData, $additionalData)
  62. ),
  63. ),
  64. ),
  65. 'common4' => array (
  66. 'name' => '? Rekomendacja Life Term + Mortgage' .$count,
  67. 'elements'=> array (
  68. 'multiText' => array(
  69. 'type' => 'textMultiList',
  70. 'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie',
  71. 'optional' => true, // false -> bez checkbox
  72. 'partitions' => $this->getRecomendationTerLifInsData($documentData)[1]
  73. ),
  74. 'multiText1' => array(
  75. 'type' => 'textMultiList',
  76. 'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy:',
  77. 'optional' => true, // false -> bez checkbox
  78. 'partitions' => $this->getRecomendationTerLifInsData($documentData)[2]
  79. ),
  80. 'multiText2' => array(
  81. 'type' => 'textMultiList',
  82. 'label' => 'Opis Ubezpieczyciela',
  83. 'optional' => true, // false -> bez checkbox
  84. 'partitions' => $this->getRecomendationTerLifInsData($documentData)[3]
  85. ),
  86. ),
  87. ),
  88. 'common7' => array (
  89. 'name' => '? Rekomendacja Whole of Life',
  90. 'elements'=> array (
  91. 'multiText' => array(
  92. 'type' => 'textMultiList',
  93. 'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie',
  94. 'optional' => true, // false -> bez checkbox
  95. 'partitions' => $this->getRecomendationWOL($documentData)[1]
  96. ),
  97. 'multiText1' => array(
  98. 'type' => 'textMultiList',
  99. 'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy:',
  100. 'optional' => true, // false -> bez checkbox
  101. 'partitions' => $this->getRecomendationWOL($documentData)[2]
  102. ),
  103. 'multiText2' => array(
  104. 'type' => 'textMultiList',
  105. 'label' => 'Opis Ubezpieczyciela',
  106. 'optional' => true, // false -> bez checkbox
  107. 'partitions' => $this->getRecomendationWOL($documentData)[3]
  108. ),
  109. ),
  110. ),
  111. );
  112. //throw new Exception('<pre>' . print_r($_POST, 1) . '</pre>');
  113. throw new Exception('<pre>' . print_r($this->groups, 1) . '</pre>');
  114. }
  115.  
  116. public function getGroups() {
  117. return $this->groups;
  118. }


Kiedyś tak to miałem (plik oryginalny przed moimi modyfikacjami).
Poprzez stworzenie wielu zmiennych group i łącznie tych tablic w jeden array dostawałem taką samą tablice jak przy jednej tablicy z grupami a dodatkowo miałem możliwość dodania warunków if dla różnych typów polis (if ($type == 'TerLifIns' || $type == 'MorIns') ...teraz nie mogę / nie potrafię tego zrobić. Czyli że dana <li> w HTML generowało mi tylko jeśli istniał dany typ polisy.

Jeśli jest to jako jedna tablica to nie mam warunków if to dostaje błąd jeśli dany typ nie istnieje. Wcześniej było to rozwiązane poprzez:
  1. if ($type == 'WOL') {
  2. $this->group7 = array (
  3. 'common7' => array (
  4. 'name' => '? Rekomendacja Whole of Life',
  5. 'elements'=> array (
  6. 'multiText' => array(
  7. 'type' => 'textMultiList',
  8. 'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie',
  9. 'optional' => true, // false -> bez checkbox
  10. 'partitions' => $this->getRecomendationWOL($documentData)[1]
  11. ),
  12. 'multiText1' => array(
  13. 'type' => 'textMultiList',
  14. 'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy:',
  15. 'optional' => true, // false -> bez checkbox
  16. 'partitions' => $this->getRecomendationWOL($documentData)[2]
  17. ),
  18. 'multiText2' => array(
  19. 'type' => 'textMultiList',
  20. 'label' => 'Opis Ubezpieczyciela',
  21. 'optional' => true, // false -> bez checkbox
  22. 'partitions' => $this->getRecomendationWOL($documentData)[3]
  23. ),
  24. ),
  25. ),
  26. // );
  27. // }


No a teraz jeśli klient nie ma polisy o typie WOL to dostaje błąd dla zmiennej $common7. Przy rozbiciu na wiele zmiennych group rozwiązywałem to jak wyżej i dostawałem w html <li> dla common7 "Rekomendacja Whole of Life" dla tej grupy ($group7).

Ten post edytował pela222 6.04.2021, 17:49:22
Go to the top of the page
+Quote Post

Posty w temacie
- pela222   [PHP]Funkcja zwracająca tablicę danych   26.03.2021, 13:41:54
- - nospor   Nie $recomend[group1][] a $recomend[...   26.03.2021, 15:34:57
- - pela222   Ok to jeszcze jedno pytanie: [PHP] pobierz, plaint...   6.04.2021, 09:56:54
- - nospor   Ja nie kumam o co pytasz. Jakos to skomplikowane d...   6.04.2021, 10:51:45
- - pela222   Ok. Nie jestem autorem tego kodu, a jedynie modyfi...   6.04.2021, 13:11:38
- - nospor   Mi nie chodzilo stricte o zmienne prywatne, tylko ...   6.04.2021, 13:13:57
- - pela222   Ponieważ na podstawie tak stworzonej tablicy ze zm...   6.04.2021, 13:31:07
- - nospor   Dlatego ci mowie zrob z tego tablice z grupami. La...   6.04.2021, 14:26:22
- - pela222   Wiem że teraz to pewnie załamiesz ręce ale mam stw...   6.04.2021, 14:43:14
- - nospor   Hehe, no zalamalem   6.04.2021, 14:56:40
- - pela222   No się pośmialiśmy z mojego dyletanctwa i braku wi...   6.04.2021, 15:31:54
- - nospor   Nie. Caly czas ci mowie: Nie tysiac zmiennych dla ...   6.04.2021, 16:20:26
- - pela222   Jeśli o to chodziło to nie rozumiem co to wnosi......   6.04.2021, 17:12:41
- - nospor   Ano to wnosi, ze jest latwiejsze do pracy Nie roz...   7.04.2021, 09:39:25
- - pela222   RE: [PHP]Funkcja zwracająca tablicę danych   7.04.2021, 11:33:01
- - gino   można tak dodać do tablicy w zależności od warunku...   8.04.2021, 09:38:17
- - pela222   No tak można bo tak to miałem ... co prawda miałem...   8.04.2021, 09:43:14
- - gino   Cytat@nospor Mi nie chodzilo stricte o zmienne pry...   8.04.2021, 09:54:23
- - pela222   Ale wcześniej też tworzyłem jedną tablicę wielowym...   8.04.2021, 10:24:44
- - gino   Jak sam napisałeś CytatKiedyś tak to miałem (plik ...   8.04.2021, 10:46:08
- - pela222   [PHP] pobierz, plaintext // Tutaj zaczyna się sek...   8.04.2021, 12:14:32
- - gino   Po mojemu to tak: Kod private $groups = array...   8.04.2021, 13:43:01
- - pela222   RE: [PHP]Funkcja zwracająca tablicę danych   9.04.2021, 13:52:17
- - nospor   Strasznie ciezko sie czyta ten kod. Pewnie gino og...   9.04.2021, 14:12:48


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 10:09