Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeszukiwanie oraz wyświetlanie tablicy
Forum PHP.pl > Forum > PHP
karolmm
Witam,

jestem na etapie tworzenia pewnej funkcjonalności. Kod HTML wygląda w ten sposób:

  1.  
  2. <div class="wz_details_bottom">
  3. <b>Zamówienie nr:</b> <?php echo $values['order_id']; ?> <b>Klient:</b> <?php echo $values['name']; ?> <b>Ilość:</b> <?php echo $values['amount']; ?><br>
  4. Ilość palet: <input type="wz" class="required" size="10" name="obiekt['<?php echo $values['order_id']; ?>']['1']['ilosc_palet'][]" class="required number" placeholder="Ilość palet" />
  5. Ilość sztuk: <input type="wz" class="required" size="10" name="obiekt['<?php echo $values['order_id']; ?>']['1']['ilosc_sztuk'][]" class="required number" placeholder="Ilość sztuk" /><br>
  6. Ilość palet: <input type="wz" size="10" name="obiekt['<?php echo $values['order_id']; ?>']['2']['ilosc_palet'][]" placeholder="Ilość palet" />
  7. Ilość sztuk: <input type="wz" size="10" name="obiekt['<?php echo $values['order_id']; ?>']['2']['ilosc_sztuk'][]" placeholder="Ilość sztuk" /><br>
  8. Ilość palet: <input type="wz" size="10" name="obiekt['<?php echo $values['order_id']; ?>']['3']['ilosc_palet'][]" placeholder="Ilość palet" />
  9. Ilość sztuk: <input type="wz" size="10" name="obiekt['<?php echo $values['order_id']; ?>']['3']['ilosc_sztuk'][]" placeholder="Ilość sztuk" /><br>
  10. Ilość palet: <input type="wz" size="10" name="obiekt['<?php echo $values['order_id']; ?>']['4']['ilosc_palet'][]" placeholder="Ilość palet" />
  11. Ilość sztuk: <input type="wz" size="10" name="obiekt['<?php echo $values['order_id']; ?>']['4']['ilosc_sztuk'][]" placeholder="Ilość sztuk" />
  12. </div>


Tak przygotowany kod generuje mi tablicę tego typu

  1. array(3) { ["'27'"]=> array(4) { ["'1'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(2) "10" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(2) "11" } } ["'2'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(2) "10" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(2) "11" } } ["'3'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(2) "10" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(2) "11" } } ["'4'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(0) "" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(0) "" } } } ["'28'"]=> array(4) { ["'1'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(2) "12" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(2) "13" } } ["'2'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(0) "" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(0) "" } } ["'3'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(0) "" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(0) "" } } ["'4'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(0) "" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(0) "" } } } ["'29'"]=> array(4) { ["'1'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(2) "14" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(2) "15" } } ["'2'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(0) "" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(0) "" } } ["'3'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(0) "" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(0) "" } } ["'4'"]=> array(2) { ["'ilosc_palet'"]=> array(1) { [0]=> string(0) "" } ["'ilosc_sztuk'"]=> array(1) { [0]=> string(0) "" } } } }


Nie do końca przyjazne i przede wszystkim czytelne jest operowanie na tego typu polach - biorąc przede wszystkim pod uwagę, że w późniejszym etapie będę potrzebował wymnożyć przez siebie pary liczb ilosc_paletp[x] * ilosc_szt[x]. Dodatkowo potrzebuję też wyciągnąć pierwszą i główną wartość tabeli, w tym przypadku "27", "28", "29" - co odpowiada za ID. Czy ktoś mógłby podsunąć pomysł, na rozwiązanie mojego problemu?

Pozdrawiam.
CuteOne
Hmmm ale to jest zwyczajna tablica... zamiast var_dump() użyj print_r()
  1. echo '<pre>';print_r($tablica);


a wszystko ładnie powinno ci się rozjaśnić.

  1. $wynik = $tablica[29]['sztuk'] * $tablica[29]['palet'];
Uriziel01
Ta tablica wygląda całkowicie czytelnie ale z uzyciem: http://xdebug.org/ (jeżeli o czytelność chodzi).

Jeżeli chodzi o 'spłaszczanie' tablicy tablic to wystarczy prosty
  1. foreach($array_of_arrays AS $array)
  2. {
  3. //Tutaj operacje na pojedynczych tablicach
  4. }
karolmm
Cytat(CuteOne @ 16.10.2012, 14:45:50 ) *
a wszystko ładnie powinno ci się rozjaśnić.
  1. $wynik = $tablica[29]['sztuk'] * $tablica[29]['palet'];


Wszystko powinno działać, a tak nie jest. Tablica fajnie się wyświetla, faktycznie - natomiast przy próbie odwołania się do konkretnego jej elementu - dostaję NULL'a. Dodam, że korzystam w całości z Zend Framework - może tu tkwi problem. Czy w przypadku Zenda i tablic asocjacyjnych spotkał się ktoś z tego typu problemem? Foreach twierdzi, że w środku "coś" jest, print_r wyświetla całość, a var_dump($tablica['24']['ilosc']['1']['ilosc_palet']); zwraca NULL . Print_r daje taki efekt ->

  1. (
  2. ['24'] => Array
  3. (
  4. ['ilosc'] => Array
  5. (
  6. ['1'] => Array
  7. (
  8. ['ilosc_palet'] => 11
  9. ['ilosc_sztuk'] => 11
  10. )
  11.  
  12. ['2'] => Array
  13. (
  14. ['ilosc_palet'] =>
  15. ['ilosc_sztuk'] =>
  16. )
  17.  
  18. ['3'] => Array
  19. (
  20. ['ilosc_palet'] =>
  21. ['ilosc_sztuk'] =>
  22. )
  23.  
  24. ['4'] => Array
  25. (
  26. ['ilosc_palet'] =>
  27. ['ilosc_sztuk'] =>
  28. )
  29.  
  30. )
  31.  
  32. )
  33.  
  34. ['28'] => Array
  35. (
  36. ['ilosc'] => Array
  37. (
  38. ['1'] => Array
  39. (
  40. ['ilosc_palet'] => 12
  41. ['ilosc_sztuk'] => 12
  42. )
  43.  
  44. ['2'] => Array
  45. (
  46. ['ilosc_palet'] =>
  47. ['ilosc_sztuk'] =>
  48. )
  49.  
  50. ['3'] => Array
  51. (
  52. ['ilosc_palet'] =>
  53. ['ilosc_sztuk'] =>
  54. )
  55.  
  56. ['4'] => Array
  57. (
  58. ['ilosc_palet'] =>
  59. ['ilosc_sztuk'] =>
  60. )
  61.  
  62. )
  63.  
  64. )
  65.  
  66. )
destroyerr
W htmlu, dla pól formularzy podajesz nazwy. Twoje nazwy mają też apostrofy, ale nie ma obowiązku ich stosowania. Trzeba natomiast pamiętać, że w PHP klucz w tablicy również będzie je zawierał. Porównaj sobie te dwie tablice:
  1. print_r(array('key' => 'value'));
  2. print_r(array('\'key\'' => 'value'));
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.