Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazywanie tablic przez GET/POST
Forum PHP.pl > Forum > PHP
Vengeance
  1. <?php
  2. $arr = array('' => 4, 'costam'=>3);
  3. var_dump($arr);
  4. ?>


To działa. Wiadomo co zwróci

Teraz:
  1. <?php
  2. var_dump( $_GET['a'] );
  3. ?>

i wywołanie
test.php?a[costam]=3&a[]=4

Chciałbym aby zwróciło to samo, lecz zamiast "pustego" klucz wstawia do niego wartość 0.
Czy da się jakoś przez <input .. name="a[]" /> badz tez przez URL podac aby HTML "widział" pusty ciąg znaków?
sowiq
Porównaj sobie:
  1. <?php
  2. $a[] = 11;
  3. $b[''] = 11;
  4.  
  5. ?>

morał sam wyciągniesz winksmiley.jpg

I pytanie - po co Ci pusty indeks? Czym on się różni od zerowego?
Vengeance
Morał znam. Wiem czemu jeśli w URLu znajdzie się a[]=4 to php to widzi przez 0, tłumokiem nie jestem :]
Sęk w tym, że nie mam pojęcia czy da się na HTML, a w sumie na przeglądarke+php wymusić, żeby php zobaczył pusty indeks
a[<tu coś magicznego>]=4

A pusty indeks po co? W sumie po nic, niby mógłbym sprawdzić czy == 0, ale trafiłem na coś czego nie wiem i szukam rozwiązania - w razie co na przyszłość :]

Okej, jakby co to na przykład:
a[]=4 , da array(0=>4)
a[%20]=4 , da array(0=>4)
a[%20%20]=4 , da array(' '=>4), więc można zastosować trim() jeśli nie chcemy mieć klucza 0 tylko pusty.
seth-kk
nie zupelnie
  1. <?php
  2. $arr[] = 4;
  3. $arr[] = 5;
  4. ?>

wpisuje 4 w pierwsze polne miejsce w tablicy (indeksujac od 0)a 5 w kolejne
podobny efekt daje
  1. <input name="arr[]" value="4" />
  2. <input name="arr[]" value="5" />

nie probowalem wczesniej z pustym stringiem ale pewnie zostanie to potraktowane jak w przypadku tablic asocjacyjnych
maly_swd
nie wnikam czemu:) i jaki efekt chcesz uzyskac... ale rozwiazaniem z przekazywaniem tablic jest:


uzyj funkcji serialize i unserialize
sowiq
Cytat(Vengeance @ 27.05.2009, 22:10:42 ) *
trafiłem na coś czego nie wiem i szukam rozwiązania - w razie co na przyszłość :]
Ok, ale jedno ale. Indeksy służą właśnie do tego, żeby jakoś... zaindeksować dane, np. numerować kolejne elementy. Dlatego trochę śmieszy mnie szukanie na siłę czegoś, co tak na prawdę nie ma racji bytu. Chyba że wyłącznie jaka ciekawostka, bo wątpię, czy Ci się to kiedykolwiek przyda.
Vengeance
Skoro indeksy załatwiają wszystko, to po co tablice asocjacyjne.
Skoro pusty indeks jest czymś "bez sensu" to czemu PHP bez problemu to umożliwia.

Dla mnie ma rację bytu :]
Mam tablicę wielowymiarową, w której trzymam ID rekordu, potem jakieś "opcje" a na końcu wartości liczbowe.
Kod
Array(
  3 => Array(
    'opcja1' => 2,
    'opcja2' => Array(
      'cos' => 3,
      '' => 7
    ),
    'opcja3' => 5,
    '' => 12
)


I właśnie sęk w tym, że coś może nie mieć żadnej opcji, a dodatkowo może wystąpić sytuacja gdzie jeden element ma [opcja2, cos] a drugi tylko [opcja2] stąd potrzebne mi puste indeksy. Ofc da się zrobić zwykłe (if $zmienna == 0) $zmienna = ''; ale co gdyby nagle ID moglobyc tez rowne i mniejsze od 0? Stad moje poszukiwania tego, czy da sie osiagnac to co chcialem zamym zapisem w URL, bez ifów w PHP winksmiley.jpg

@seth-kk: nie mam pojęcia o co Tobie chodziło
maly_swd
Pamietaj ze adres URL moze miec max 2048znaki + domena (~35)

sprawdz sobie serialize tak jak Ci pisalem.

*puste indexy przydaja sie:)
seth-kk
chodzilo mi o to ze $arr[] dziala podobnie do array_push()
osobiscie nie ryzykowalbym z pustymi indeksami i zastapil je czyms w stylu if(empty()) switchem, lub w pelni dynamiczna konstrukcja w stylu
  1. <?php
  2. $arr = array();
  3.  
  4. function test($val)
  5. {
  6.   global $arr;
  7.  
  8.   if(!is_set($arr[$val]))
  9.   {
  10.      $arr[$val] = 1;
  11.      return false;
  12.   }
  13.   return true;
  14. }
  15. ?>
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.