Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]foreach i podwójne unserialize
nikestylex7
post
Post #1





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Witam. Potrzebuje przeprowadzić unserialize dla dwóch array w jedej mam nazwy części a w drugiej ich ceny. Wszystko by grało gdyby przy zwracaniu cen zwraca mi wepchnięte null w jednym elemencie. Wynikiem jest zwrócenie pięciu wierszy gdzie w cenie mam pierwsze 3(0,1,2) potem null i potem kolejne 2 (4,5). Jak to naprawić ? Jakieś rozwiązania. Ponieważ gdy stosuję oddzielnie foreach dla ceny i nazw to wszystko gra tylko jednak nie mogę ich połączyć aby były w wierszach.

  1. <?php
  2. $i = 1;
  3. foreach (unserialize($value->rocznekoszty) as $rocznekoszty) {
  4. $cena = unserialize(stripslashes($value->cena));
  5. $count = $i++;
  6.  
  7. echo '<tr id="wiersz-'.$count.'">
  8. <td align="center" width="5%" height="5%">'.$count.'</td>
  9. <td width="45%" height="5%"><input type="text" size="33" value="'.$rocznekoszty.'"/></td>
  10. <td width="5%" height="5%"><input class="ctype_digit_dot" type="text" size="6" value="'.$cena[$count-1].'"/></td>
  11. <td align="center" width="2%" height="5%">zł</td>
  12. </tr>';
  13.  
  14.  
  15. }
  16.  
  17. ?>

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Dziś nie myślę, ale napisze co mozesz poprawic:

1. foreach (unserialize($value->rocznekoszty) (...).
Przerób to, zeby iterowalo po $value ogółem, a nie konretnej wlasnosci (->rocznekoszty).
Tzn. Np. foreach ($value as $v)...
Gdy juz sprawdzisz czy poprawnie zwraca (np. var_dump($v)) do tego to dopiero rob te zmienne.
$rocznekoszty = unserialize($v->cos);
$cena = unserialize(stripslashes($v->cena)); # poza tym, tu chyba powinna byc inna kolejnosc funkcji > ale nie wiem jak u ciebie to dziala (IMG:style_emoticons/default/biggrin.gif)

Musial bys pokombinowac, z ta petla. Bo nie mam jak przetestowac czy dobrze.

2. Zmienna count.
$count = $i++;
Skasuj nią najlepiej, i zrob $i++; dopiero za tym echo. To bedziesz mial 1 zmienna zamiast 2.
--
Czyli mniej wiecej cos takiego:
<?php
  1. $i = 1;
  2. foreach ($value as $v) {
  3. $rocznekoszty = unserialize($v->cos);
  4. $cena = unserialize(stripslashes($v->cena));
  5.  
  6. echo '<tr id="wiersz-'.$i.'">
  7. <td align="center" width="5%" height="5%">'.$i.'</td>
  8. <td width="45%" height="5%"><input type="text" size="33" value="'.$rocznekoszty.'"/></td>
  9. <td width="5%" height="5%"><input class="ctype_digit_dot" type="text" size="6" value="'.$cena[$i-1].'"/></td>
  10. <td align="center" width="2%" height="5%">zł</td>
  11. </tr>';
  12. ++$i;
  13.  
  14. }
  15.  
  16. ?>

Ale miej na uwadze ten 1. Punkt bo moze nie dzialac jak trzeba. - przetestuj.

Ten post edytował KsaR 15.09.2015, 15:41:38
Go to the top of the page
+Quote Post

Posty w temacie


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: 10.10.2025 - 18:35