Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

`http_build_query` a usunięcie numerów indeksów



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
pehapkid
Gość





PostWysłany: Wto Paź 18, 2016 5:09 pm  OP    Temat postu: `http_build_query` a usunięcie numerów indeksów Odpowiedz z cytatem Pisownia

Witaj, na potrzeby pewnego api potrzebuję wysłać tablicę metodą post, curlem w takiej formie
Cytat:
arr[point][]=1&arr[point][]=2&arr[point][]=3


Mój przykładowy kod

Kod:

$arr = array(
    'arr[point]' => array(1,2,3)
);

$data = http_build_query($arr);

echo urldecode($data);



gdy używam tego sposobu dostaję
Cytat:
arr[point][0]=1&arr[point][1]=2&arr[point][2]=3


czy możliwe jest wygenerowanie takiego zapytania bez indeksów tablic? czy to w ogóle poprawne?
Powrót do góry
marcin_an



Dołączył: 26 Maj 2005
Posty: 18822

PostWysłany: Wto Paź 18, 2016 7:35 pm      Temat postu: Odpowiedz z cytatem Pisownia

Dla PHP obydwa zapisy mają to samo znaczenie. Nie ma więc potrzeby usuwać indeksów.
_________________
Nieaktywny od 2017-04-01
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
pehapkid
Gość





PostWysłany: Wto Paź 18, 2016 7:54 pm  OP(?)    Temat postu: Odpowiedz z cytatem Pisownia

Tak marcinie. Jednak to Api wymaga takiego podania. W przeciwnym razie odrzuca mi. To rozumiem, że pozostaje jakieś przeparsowanie tego ręcznie
Powrót do góry
marcin_an



Dołączył: 26 Maj 2005
Posty: 18822

PostWysłany: Wto Paź 18, 2016 8:17 pm      Temat postu: Odpowiedz z cytatem Pisownia

http_build_query buduje query stringa czytelnego dla PHP. Jeżeli chcesz mieć rozwiązanie dla innego narzędzia, to musisz je sam zaimplementować. Zend nie napisze kodu dla wszystkiego, co kto sobie może wymyślić ;). Nie istnieje żaden standard przekazywania nieatomowych danych przez zapytanie*, więc jaki jest format to już kwestia danej platformy.

Najprostsze, co możesz w tej sytuacji zrobić, to przebiegać po tablicy, dla każdego elementu wywołać http_build_query podając mu explicite nazwę, a następnie wszystkie elementy łącząc &. Coś w tym stylu:
Kod:
$input = [4, 6, 'foo', 'bar'];
$prefix = 'array[point]';
$result = implode('&',
      array_map(function ($v) use ($prefix) {
        return http_build_query(["${prefix}[]" => $v]);
      }, $input));

____
* Tak naprawdę dla atomowych też nie ma - de facto standardem jest rozwiązanie używane przez przeglądarki do wysyłania formularzy i tyle. Ale zapytanie w fomie "x~20,y~40,z~33", określające zmienne x, y i z na - odpowiednio - 20, 40 i 33, jest z punktu widzenia URI prawidłowe. Podobnie jak "x,y,z~20,40,33" albo "x-je-dwadziescia,y-je-czterdziesci,z-je-trzytrzy" ;).

_________________
Nieaktywny od 2017-04-01
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> PHP Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.08208 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |