Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][tablice] generowanie tytułów, nietypowa pętla
kristaps
post 13.09.2016, 19:34:31
Post #1





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

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


Witam, chciałbym Was prosić o radę jak najlepiej podejść do tematu, który niżej opiszę. Mam tymczasową tablicę dla każdego produktu:

  1. (
  2. [0] => Array
  3. (
  4. [0] => VW
  5. [1] => Array
  6. (
  7. [0] => GOLF IV
  8. [1] => PASSAT
  9. [2] => JETTA
  10. [3] => POLO
  11. [4] => JETTA
  12. [5] => TRANSPORTER T4
  13. [6] => TRANSPORTER T5
  14. )
  15. [1] => Array
  16. (
  17. [0] => AUDI
  18. [1] => Array
  19. (
  20. [0] => A2
  21. [1] => A4
  22. [2] => A4
  23. [3] => A2
  24. [4] => 80
  25. [5] => 100
  26. [6] => A4
  27. [7] => A2
  28. [8] => 100
  29. )
  30.  
  31. )


Na jej podstawie muszę wygenerować grupy, które nie mają więcej niż 50 znaków. Ważne by skrypt kontynuował przeszukiwanie tablicy, jeżeli dana fraza jest już zbyt długa, a następnie do niej wracał, podczas generowania kolejnego tytułu.

Czyli jeżeli mam grupę:

"GOLF IV PASSAT JETTA POLO TRANSPORTER T4", w tym przypadku zostaje mi 10 znaków, więc kolejna pozycja "TRANSPORTER T5" musi zostać pominięta, następnie przechodzi do grupy AUDI i wybiera kolejną pozycję. Tytuł wyglądałby następująco: "GOLF IV PASSAT JETTA POLO TRANSPORTER T4 AUDI A2". W następnej kolejce wybierze wszystkie pozycje "AUDI", a następnie doda "TRANSPORTER T5". Jaki sposób będzie najrozsądniejszy?

Ten post edytował kristaps 13.09.2016, 19:38:35
Go to the top of the page
+Quote Post
trueblue
post 13.09.2016, 19:46:10
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Przed Twoją edycją:
  1. function joinMaxString($joined,$item)
  2. {
  3. if(empty($joined)){
  4. if(strlen($item)<=50){
  5. $joined=$item;
  6. }
  7. }
  8. else{
  9. if(strlen($joined." ".$item)<=50){
  10. $joined.=" ".$item;
  11. }
  12. }
  13. return $joined;
  14. }
  15. var_dump(array_reduce($marki[0][1],"joinMaxString"));

może coś z tego utkasz.


--------------------
Go to the top of the page
+Quote Post
kristaps
post 13.09.2016, 20:05:02
Post #3





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

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


Witam, dzięki za odzew. Jak będzie najlepszy sposób żeby całość zapętlić i pominąć już wybrane?

  1. unset($marki[0][1][1]);
i pomniejszasz tabelę, czy jest lepszy sposób?
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 12.06.2025 - 20:09