Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]for na foreach
matyskiewicz
post
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


Witam
Mam problem z przetłumaczeniem pętli for na foreach...
  1. <?php
  2. for($i = 0; $i < count($_SESSION['cart']); $i++)
  3.        {
  4.        if($_SESSION['cart'][$i]['id'] == $zamId)
  5.            unset($_SESSION['cart'][$i]);                    
  6.    }
  7. ?>

W moim rozumieniu:
  1. <?php
  2. foreach($_SESSION['cart'] as $produkt)
  3.    {
  4.          if(isset($produkt))
  5.           {
  6.            if($produkt['id'] == $zamId)
  7.                unset($produkt);        
  8.           }
  9.    }
  10. ?>

lecz funkcja unset nie usuwa wpisu z tablicy. Mogę prosić o podpowiedź, w czym leży problem?

Ten post edytował matyskiewicz 18.05.2009, 14:50:41


--------------------
eclipse :)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


http://pl.php.net/manual/pl/control-structures.foreach.php:
Cytat
Informacja: Unless the array is referenced, foreach operates on a copy of the specified array and not the array itself. foreach has some side effects on the array pointer. Don't rely on the array pointer during or after the foreach without resetting it.
W wolnym tłumaczeniu: foreach działa na kopii tablicy, a nie na samej tablicy

[edit]
Zobacz też: http://pl.php.net/manual/pl/control-struct...reach.php#88578

Ten post edytował sowiq 18.05.2009, 14:53:46
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Czyli powinieneś skorzystać z konstrukcji:
  1. <?php
  2. froeach($array as $key => $value):
  3. ?>
Swoją drogą... ten pierwszy IF jest kompletnie niepotrzebny.
Go to the top of the page
+Quote Post
matyskiewicz
post
Post #4





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


a w jaki sposób można usunąć ten wpis z tablicy (oryginalnej)? bo na for poległem: Temat: PHPTablice_a_petle


--------------------
eclipse :)
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


unset" title="Zobacz w manualu PHP" target="_manual + podanie do niego konkretnego elementu tablicy
Go to the top of the page
+Quote Post
nexis
post
Post #6





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


  1. <?php
  2. foreach($_SESSION['cart'] as $key => $value) {
  3.    if ($value['id'] == $zamId) {
  4.        unset($_SESSION['cart'][$key]);
  5.    }        
  6. }
  7. ?>


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
matyskiewicz
post
Post #7





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


Oczywiście, dziękuję pomogło, ale mogę prosić o objaśnienia do tego kodu? Bo dzięki gotowcowi nie nauczę się za wiele...


--------------------
eclipse :)
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Bo dzięki gotowcowi nie nauczę się za wiele...
Nie przesadzasz troche? 3 linijki kodu nazywasz gotowcem?

1 linia - foreach - chyba wiesz do czego sluzy
2 linia - if - chyba wiesz do czego sluzy
3 linia - unset - masz opisane na przykladach w manualu.

czego tu nie rozumiesz?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
matyskiewicz
post
Post #9





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


  1. <?php
  2. foreach($_SESSION['cart'] as $key => $value) {
  3.   if ($value['id'] == $zamId) {
  4.       unset($_SESSION['cart'][$key]);
  5.   }        
  6. }
  7. ?>

if - rozumiem
unset - rozumiem
pętla foreach:
  1. <?php
  2. $_SESSION['cart'] as $key => $value
  3. ?>

i wykorzystanie $value
  1. <?php
  2. $value['id'] == $zamId
  3. ?>


--------------------
eclipse :)
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
$_SESSION['cart'] as $key => $value
PRzeciez to jest podstawowa skladnia foreach opisana w manualu.

Cytat
$value['id'] == $zamId
PRzeciez w swoim pierwszym poscie sam to napisales, tylko ze zmienna nie nie nazywala sie value a product
if($produkt['id'] == $zamId)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
matyskiewicz
post
Post #11





Grupa: Zarejestrowani
Postów: 184
Pomógł: 3
Dołączył: 6.10.2006
Skąd: Poznań

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


Cytat(nospor @ 19.05.2009, 08:50:08 ) *
PRzeciez to jest podstawowa skladnia foreach opisana w manualu.

PRzeciez w swoim pierwszym poscie sam to napisales, tylko ze zmienna nie nie nazywala sie value a product
if($produkt['id'] == $zamId)

ok już rozumiem smile.gif


--------------------
eclipse :)
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: 20.08.2025 - 04:18