Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> foreach
attimo
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 6
Dołączył: 23.01.2010

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


Mam w tablicy przykładowe dane np. komputer, myszka
  1. foreach($tablica as $wartosc) {
  2. if(strpos($wartosc,$znak) == 0) { //sprawdza czy znak jest pierwszą litera w wyrazie
  3. $reszta = strtok($wartosc,$znak); //ucina wszystko po wystapieniu ciagu $znak
  4. } else {
  5. echo 'brak wynikow';
  6. }
  7. }

Problem jest taki, że do zmiennej reszta zapisuje się rowniez drugi wyraz w tablicy dlaczego ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
everth
post
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Bo drugie przejście pętli nadpisuje zmienną reszta? Zresztą $reszta jest lokalna dla pętli foreach (poza nią nie istnieje). Może tak:
  1. function checkCharIsFirst($tablica,$znak) {
  2. $reszta = array();
  3. foreach($tablica as $key=>$wartosc) {
  4. //sprawdza czy znak jest pierwszą literą i ucina wszystko po wystapieniu ciagu $znak i zapisuje jako element tablicy reszta
  5. if(strpos($wartosc,$znak) == 0) $reszta[$key] = strtok($wartosc,$znak);
  6.  
  7. }
  8. return $reszta;
  9. }
  10. //Zastosowanie
  11. $tablica = array('mycha','komp','bezsens');
  12. $reszta = checkCharIsFirst($tablica,'m');
  13. var_dump($reszta) // - pokazuje zawartość tablicy reszta
  14. }


Ten post edytował everth 28.07.2010, 14:00:45


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(everth @ 28.07.2010, 14:59:58 ) *
Zresztą $reszta jest lokalna dla pętli foreach (poza nią nie istnieje).

Nie siej herezji bo Cię spalą na stosie.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pytanie. Sprawdzasz czy litera występuje w pierwszym wyrazie każdego elementu tablicy czy tylko pierwszego? Tak czy inaczej ja bym w momencie znalezienia dopasowania walnął break, co mi sprawi, że wyskoczę z pętli.
I fakt... Sieje herezje winksmiley.jpg $reszta jest globalna dla pętli, ale lokalna dla funkcji smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
everth
post
Post #5





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Niech to, możecie mnie spalić biggrin.gif. Ale i tak dobrze zrobi jak zainicjalizuje zmienną wynikową przed pętlą.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
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 Aktualny czas: 19.08.2025 - 10:18