Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] explode
integer000
post 24.06.2006, 18:10:27
Post #1





Grupa: Zarejestrowani
Postów: 129
Pomógł: 0
Dołączył: 24.09.2005

Ostrzeżenie: (30%)
XX---


Witam

mam taki skrypt:
  1. <?php
  2. $wva = $_COOKIE["TestCookie"];
  3. $data=explode("*|*", $wva);
  4.  
  5. echo $data[0];
  6. echo $data[1];
  7. echo $data[3];
  8. ?>


odczytuje z cookie a następnie za pomocą explode dziele na kawałki...

Tylko teraz mam pytanie co do tej części kodu: "$data[0]" jeśli w nawiasie jest zero to w zmiennej tej będzie przechowywana pierwsza część wycięta z całego ciągu, jeśli będzie dwa to druga część. Iniby wszystko jest OK, tyle że ilość danych przechowywanych w cookie się zmienia i nie jestem w stanie przewidzieć czy wystarczy że zadeklaruje od $data[0] do $data[4], czy będzie potrzeba wykorzystać nawet $data[99].

Tak więc moje pytanie brzmi: jak zwiękrzać liczbę w nawiasie o jeden, tak aby wszystkie elemęty z cookie zostały wyświetlone questionmark.gif
Go to the top of the page
+Quote Post
macza
post 24.06.2006, 18:14:35
Post #2





Grupa: Zarejestrowani
Postów: 236
Pomógł: 4
Dołączył: 1.05.2006
Skąd: Lublin

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


uzyj WHILE
  1. <?
  2. $licz=0;
  3. while(1=1){
  4. if($data[$licz]=''){ break; } //przerywa jezeli pusta $data[liczba]
  5. echo $data[$licz].'<br>';
  6. $licz=$licz+1;
  7. }
  8. echo 'Jest: '.$licz.';
  9. ?>


Ten post edytował macza 24.06.2006, 18:16:13


--------------------
_tworzenie stron www tanio Lublin - tworzenie stron www, tanio, szybko, solidnie, własny CMS.
Go to the top of the page
+Quote Post
integer000
post 24.06.2006, 18:21:05
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 0
Dołączył: 24.09.2005

Ostrzeżenie: (30%)
XX---


Cytat(macza @ 24.06.2006, 17:14 ) *
uzyj WHILE
  1. <?
  2. $licz=0;
  3. while(1=1){
  4. if($data[$licz]=''){ break; } //przerywa jezeli pusta $data[liczba]
  5. echo $data[$licz].'<br>';
  6. $licz=$licz+1;
  7. }
  8. echo 'Jest: '.$licz.';
  9. ?>


A dlaczego while(1=1){ ( jeden jest równe jeden) questionmark.gif

Ten post edytował integer000 24.06.2006, 18:21:26
Go to the top of the page
+Quote Post
piotrekkr
post 24.06.2006, 18:38:29
Post #4





Grupa: Zarejestrowani
Postów: 386
Pomógł: 25
Dołączył: 28.09.2005

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


moze tak :
  1. <?php
  2. $licz=0;
  3. while($data[$licz]!=''){
  4. echo $data[$licz].'<br>';
  5. $licz++;
  6. };
  7.  
  8. echo 'jest '.$licz;
  9. ?>


to to samo co tamto tylko moze latwiejsze do zrozumienia. Taamta petla w niskonczonosc by sie wykonywala bo 1 jest zawsze rowne jeden a petla przerywa sie w warynku
  1. <?php
  2. if($data[$licz]==''){ break; }
  3. ?>
tzn kiedy nie istnieje nastepny index. Najprawdopodobniej php by wygenerowalo blad ze nie ma takiego indexu

ale w gruncie rzeczy nie wiem po co takie kombinacje mozna przeciez zrobic
  1. <?php
  2. for($i=0;$i<count($data);$i++){
  3. echo $data[$i].'<br />';
  4. };
  5. echo ('jest '.($i-1))
  6. ?>


Ten post edytował piotrekkr 24.06.2006, 18:52:06
Go to the top of the page
+Quote Post
Ludvik
post 24.06.2006, 19:02:58
Post #5





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Ale kombinujecie...
  1. <?php
  2. foreach ($data as $element) {
  3. echo $element;
  4. }
  5. ?>


--------------------
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: 18.06.2025 - 02:23