Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Podmiana danych w pliku, Problem z podmianą indeksów tablicy
TwojPan
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 13.08.2013

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


Witam,
Ju opisuje problem

Mam plik ktory wywoluje do tablicy. W srodku jest tak:

  1. pierwszy index o||14a||14b||28a


Mam pole select z dwoma polami: 14 i 28.

Probem w tym ze w pliku moze byc jak powyzej lub te dane mogą być różne tj:

14a,14b,14c,28a,28b,28c i byc w roznych miejscach pomiedzy separatorem ||

np. tak

  1. pierwszy index o||28b||14c


  1. pierwszy index o||14c||14c||28b


  1. pierwszy index o||14a


  1. pierwszy index o||14a||28a||28b


  1. pierwszy index o||28c||28b||28a


Teraz posyłając z forma np. 14 potrzebuje zapisać liczbe ktorej jeszcze nie ma czyli sle 14 i teraz sprawdzam gdzie jest 14a badz 14b badz 14c i jesli gdzies jest tylko 14a drugiego indeksu nie ma to zapisuje mi 14b w kolejnym indeksie a jesi są 14a i 14b i trzeci indeks jest pusty i sle rowniez 14tke to zapisuje mi 14c. Tak samo z liczba 28.

Przykladowo sle 14tke a w pliku jest tak:

  1. pierwszy index o||14a


I teraz nie ma 14b wiec zapisuje mi w pliku w kolejnym indeksie 14b

  1. pierwszy index o||14a||14b


lub sląc 28 i w pliku jest tak:

  1. pierwszy index o||14a||28c


Zapisuje mi 28a jako trzeci index

  1. pierwszy index o||14a||28c||28a


Za nic w swiecie nie potrafie tego ugrysc.

Ten post edytował TwojPan 28.09.2013, 11:56:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
em1X
post
Post #2





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


  1. function nowyCiag($ciag, $newbus, $ograniczenieWartosci=3)
  2. {
  3. $tablica=explode('||', trim($ciag));
  4.  
  5. // jeżeli ma już 3 wartości to nie rób nic
  6. if ($ograniczenieWartosci == (count($tablica)-1)) {
  7. return $ciag;
  8. }
  9.  
  10. /**
  11.   * Najpierw musimy wyznaczyć wszystkie liczby,
  12.   * które są te same, jak ta wysłana.
  13.   * Przy okazji pobieramy literki.
  14.   */
  15. $liczby=array();
  16. $literki=array();
  17.  
  18. for ($i=1, $count=count($tablica); $i<$count; $i++) {
  19. $liczba=preg_replace('/[^0-9]/', '', $tablica[$i]);
  20. if ($liczba == $newbus) {
  21. $liczby[] = $tablica[$i];
  22.  
  23. $literka=str_replace($liczba, '', $tablica[$i]);
  24. $literki[$literka]=true;
  25. }
  26. }
  27.  
  28. /**
  29.   * Jedziemy po kolei alfabetem i szukamy pierwszej wolnej
  30.   * litery, którą możemy wstawić.
  31.   */
  32. for ($i='a'; $i<='z'; $i++) {
  33. // jeżeli znaleziono 1 wolną literkę
  34. // dopisz ją i zwróć ciąg
  35. if (! isset($literki[$i])) {
  36. return sprintf('%s||%u%s', $ciag, $newbus, $i);
  37. }
  38. }
  39.  
  40. throw new Exception(sprintf('Zabrakło literek dla ciągu %s', $ciag));
  41. }


To chyba by się zgadzało:
  1. // zawartosc z pliku
  2. $ciag_oryginalny='costam 0||14c||14a';
  3. $newbus=intval($_POST['newbus']);
  4.  
  5. echo nowyCiag($ciag_oryginalny, $newbus);
  6.  
  7. // dla liczby 28 otrzymamy:
  8. // costam 0||14c||14a||28a
  9.  
  10. // dla liczby 14 otrzymamy:
  11. // costam 0||14c||14a||14b


Program może działać uniwersalnie dla każdej liczby, z większą liczbą wartości.

Ten post edytował em1X 28.09.2013, 17:43:35
Go to the top of the page
+Quote Post

Posty w temacie
- TwojPan   Podmiana danych w pliku   28.09.2013, 11:52:42
- - em1X   Przepraszam, ale nie rozumiem Nie tłumacz dla sie...   28.09.2013, 11:56:52
- - TwojPan   Cytat(em1X @ 28.09.2013, 11:56:52 ) P...   28.09.2013, 12:11:45
- - em1X   1) Można zobaczyć formularz? 2) Można zobaczyć kat...   28.09.2013, 12:14:03
- - TwojPan   Cytat(em1X @ 28.09.2013, 12:14:03 ) 1...   28.09.2013, 12:25:00
- - em1X   Nie udzieliłeś mi odpowiedzi na pytania, pokazujes...   28.09.2013, 12:29:17
- - TwojPan   Cytat(em1X @ 28.09.2013, 12:29:17 ) N...   28.09.2013, 12:40:16
- - em1X   1) Ok jest już trochę jaśniej. A możesz wytłumaczy...   28.09.2013, 12:58:08
- - TwojPan   Cytat(em1X @ 28.09.2013, 12:58:08 ) O...   28.09.2013, 13:02:56
|- - em1X   Cytat(TwojPan @ 28.09.2013, 14:02:56 ...   28.09.2013, 13:12:00
- - TwojPan   Cytat(em1X @ 28.09.2013, 13:12:00 ) C...   28.09.2013, 13:21:19
- - em1X   Podaj jak ma wyglądać ciąg wynikowy, po przesłaniu...   28.09.2013, 13:25:51
- - TwojPan   Cytat(em1X @ 28.09.2013, 13:25:51 ) P...   28.09.2013, 13:32:48
- - em1X   [PHP] pobierz, plaintext function nowyCiag($ci...   28.09.2013, 13:47:59
- - TwojPan   Cytat(em1X @ 28.09.2013, 13:36:58 ) C...   28.09.2013, 13:49:35
- - em1X   Przegapiłeś rozwiązanie. Patrz wyżej.   28.09.2013, 13:52:13
- - TwojPan   Serdeczne Bóg zapłać dobry człowieku Dziekuje ba...   28.09.2013, 13:59:55
- - em1X   Czasem samo opisanie problemu jest trudniejsze niż...   28.09.2013, 14:06:15
- - Pyton_000   Jedna uwaga. Kod$count=count($tablic...   28.09.2013, 16:14:42
- - em1X   Pyton, ośmieszasz się.   28.09.2013, 17:01:41
- - Pyton_000   A wybacz, za szybko przeczytałem Mój błąd. Błagam...   28.09.2013, 20:21:16
- - em1X   Już nawet pomijając Twój błąd, nie mówimy tu o apl...   28.09.2013, 21:32:47
- - Pyton_000   Może nie związane z moją pomyłką ale http://www.ph...   28.09.2013, 22:49:50
- - em1X   Już patrząc na sam kod przykładów widzę, że się na...   28.09.2013, 22:56:23


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

 



RSS Aktualny czas: 15.10.2025 - 09:41