Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tablica Array php
mario99228
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.01.2014

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


Witam, mam taką tablice.

  1. Array ([0] => 3893398399 [1] => 3871644589 [2] => 3863500376)


a potrzebuje żeby wyglądała tak.

  1. Array (3893198399, 3871644189, 3863500376)


Jak to zrobić ? i czy się da? niestety dla APIAllegro jest różnica miedzy jednym a drugim.

Ten post edytował mario99228 30.01.2014, 22:09:20
Go to the top of the page
+Quote Post
tomxx
post
Post #2





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


Nie da się, bo indeksy (0, 1, 2...) są dodawane przez PHP automatycznie (jeśli samemu się ich nie poda).

Ten post edytował tomxx 30.01.2014, 22:12:56
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




serialize

Ew.:
  1. $t[0] = 3893398399;
  2. $t[1] = 3871644589;
  3. $t[2] = 3863500376;
  4.  
  5. $tekst = implode(", ", $t);
  6.  
  7. echo $tekst;


--------------------
Go to the top of the page
+Quote Post
Crozin
post
Post #4





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

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


Nie ma znaczenia jak to zapiszesz, obie tablice będą identyczne (pomijam tutaj fakt, że w podanym przez Ciebie przykładzie znajdują się różne wartości).
Go to the top of the page
+Quote Post
mario99228
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.01.2014

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


Chce pobrać dane kupujących z allegro za pomocą API i metody GetPostBuyData();
parametr jaki przyjmuje to tablica Array z id z aukcji.

  1.  
  2. $tab = Array ( [0] => 3893198399 [1] => 3871644189 [2] => 3863500376 )
  3.  
  4. $allegro->objectToArray($allegro->GetPostBuyData($tab));
  5.  
  6. //zwraca pusta tablice.
  7.  
  8. $tab2 = Array (3893198399, 3871644189, 3863500376 );
  9.  
  10. $allegro->objectToArray($allegro->GetPostBuyData($tab2));
  11.  
  12. //zwraca poprawne dane
  13.  
  14.  


Dlaczego tak się dzieje?

Ten post edytował mario99228 30.01.2014, 23:24:27
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Wklej kod, jakiego używasz bo to co podałeś na pewno jest nieprawidłowe. Swoją drogą: skoro wiesz, która wersja działa to po co drążysz temat tej, która nie działa?
Go to the top of the page
+Quote Post
--mario99228--
post
Post #7





Goście







Mam taki kod.

  1. try{
  2. $allegro = new AllegroWebAPI();
  3. $allegro->Login();
  4. $sold = $allegro->objectToArray($allegro->MyAccount2(
  5. array('account-type' => 'sold',
  6. 'offset' => '0',
  7. 'items-array' => array(),
  8. 'limit' => 25))
  9. );
  10. }catch(SoapFault $sold){echo 'Erorr code';}
  11.  
  12. $tab = array();
  13. foreach($sold as $id){
  14.  
  15. $tab[] = $id['my-account-array'][0];
  16. }
  17.  
  18. $data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
  19.  
  20.  
  21. print_r('<pre>');
  22. print_r($data);
  23. print_r('</pre>');
  24.  
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




Zapisy
$tab = Array ( [0] => 3893198399 [1] => 3871644189 [2] => 3863500376 )
$tab2 = Array (3893198399, 3871644189, 3863500376 );

Dają jednakowy efekt. Problem moze lezec w czyms innym, np. bialych znakach

Zamiast
print_r('<pre>');

print_r($data);

print_r('</pre>');


Daj
print_r('<pre>');

var_dump($data);

print_r('</pre>');

I pokaz dokladnie co zwraca



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

"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
mario99228
post
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.01.2014

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


$data zwraca puste tablice, $tab zwraca nr aukcji.

  1.  
  2.  
  3. //var_dump($data);
  4.  
  5. array(3) {
  6. [0]=>
  7. array(2) {
  8. ["item-id"]=>
  9. int(2147483647)
  10. ["users-post-buy-data"]=>
  11. array(0) {
  12. }
  13. }
  14. [1]=>
  15. array(2) {
  16. ["item-id"]=>
  17. int(2147483647)
  18. ["users-post-buy-data"]=>
  19. array(0) {
  20. }
  21. }
  22. [2]=>
  23. array(2) {
  24. ["item-id"]=>
  25. int(2147483647)
  26. ["users-post-buy-data"]=>
  27. array(0) {
  28. }
  29. }
  30. }
  31.  
  32.  
  33. //var_dump($tab);
  34. array(3) {
  35. [0]=>
  36. string(10) "3893198349"
  37. [1]=>
  38. string(10) "3871644149"
  39. [2]=>
  40. string(10) "3863500346"
  41. }
  42.  
  43.  
  44.  
Go to the top of the page
+Quote Post
Greg0
post
Post #10





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


takie zdefiniowanie tablicy
  1. $tab = Array ( [0] => 3893198399 [1] => 3871644189 [2] => 3863500376 )

to raczej jest nieprawidłowe (coś takiego wyrzuca print_r). Chyba że się mylę to wyprowadźcie mnie z błędu.
Go to the top of the page
+Quote Post
nospor
post
Post #11





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




Tak, chodzilo mi o $tab

Sprobuj zrzutowac to na INT

$tab[] = (int)$id['my-account-array'][0];


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

"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
mario99228
post
Post #12





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.01.2014

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


Zwraca.


  1. array(3) {
  2. [0]=>
  3. int(2147483647)
  4. [1]=>
  5. int(2147483647)
  6. [2]=>
  7. int(2147483647)
  8. }
  9.  

$data puste. Jeśli tablice z nr aukcji zdefiniuje w ten sposób

  1. $allegro = new AllegroWebAPI();
  2. $allegro->Login();
  3. $sold = $allegro->objectToArray($allegro->MyAccount2(
  4. array('account-type' => 'sold',
  5. 'offset' => '0',
  6. 'items-array' => array(),
  7. 'limit' => 25))
  8. );
  9. }catch(SoapFault $sold){echo 'Erorr code';}
  10.  
  11. /*
  12.   $tab = array();
  13.   foreach($sold as $id){
  14.   $tab[] = (int)$id['my-account-array'][0];
  15.   //$tab[] = $id['my-account-array'][0];
  16.   }
  17.  
  18.   */
  19. $tab = Array(3893198399, 3871644189, 3863500376);
  20. $data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
  21.  
  22.  
  23. print_r('<pre>');
  24. var_dump($data);
  25. print_r('</pre>');
  26.  


Zwraca dane dla 3 aukcji.
Go to the top of the page
+Quote Post
nospor
post
Post #13





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




puste, bo przekroczylo zasieg INT 2147483647

NO ale cos mi tu nie pasuje. ustawiasz recznie takie dane:

$tab = Array(3893198399, 3871644189, 3863500376);



Podczas gdy var_dump zwracal ci wyraznie inne:
3893198349, 3871644149, 3863500346

3893198399, 3871644189, 3863500376
3893198349, 3871644149, 3863500346

To sa zupelnie rozne dane. Ustaw recznie te dane, ktore zwraca ci var_dump i dopiero potem wyciagaj wnioski. A Ty ustawiasz inne dane, to nic dziwnego ze dla jednych dziala a dla innych nie


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

"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
mario99228
post
Post #14





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.01.2014

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


Poniżej oryginalne dane które są zwracane.

  1. //var_dump($tab) zwraca
  2.  
  3. array(3) {
  4. [0]=>
  5. string(10) "3893198399"
  6. [1]=>
  7. string(10) "3871644189"
  8. [2]=>
  9. string(10) "3863500376"
  10. }
  11.  
  12. $data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
  13.  
  14. //var_dump($data) zwraca
  15.  
  16. array(3) {
  17. [0]=>
  18. array(2) {
  19. ["item-id"]=>
  20. int(2147483647)
  21. ["users-post-buy-data"]=>
  22. array(0) {
  23. }
  24. }
  25. [1]=>
  26. array(2) {
  27. ["item-id"]=>
  28. int(2147483647)
  29. ["users-post-buy-data"]=>
  30. array(0) {
  31. }
  32. }
  33. [2]=>
  34. array(2) {
  35. ["item-id"]=>
  36. int(2147483647)
  37. ["users-post-buy-data"]=>
  38. array(0) {
  39. }
  40. }
  41. }
  42.  
  43. // Przykład działający.
  44.  
  45. $tab = array(3893198399, 3871644189, 3863500376);
  46. $data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
  47. var_dump($data) //zwraca pełne tablice
  48.  
  49.  

Niepotrzebnie zmieniłem oryginalne dane, faktycznie mogło to wprowadzić niepotrzebny zamęt.

Ten post edytował mario99228 31.01.2014, 14:39:54
Go to the top of the page
+Quote Post
nospor
post
Post #15





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




OK.

Wydaje mi sie, ze problem moze byc gdzies tam w funkcji $allegro->objectToArray lub podobnych.
Twoje $tab zawiera liczby ale jako tekst. Rzutowanie tego na INT jak widac przekracza zasieg i dostaje sie zle liczby. Pewnie funkcje gdzies w srodku, jesli widza ze dana wartosc to tekst, to probuja wlasnie rzutowac to na INT i dochodzi do przeklamania danych


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

"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
phpion
post
Post #16





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Przerabiałem kiedyś podobny temat. Musisz do Allegro dostarczyć liczby, nie tekst. Czyli każdy ID aukcji musi być liczbą. Nie możesz jednak rzutować na inta bo przekraczasz zakres, musisz rzutować na float. Czyli albo (float)$id albo floatval($id) albo przelecieć całą tablicę z id poprzez array_map('floatval', $array). Powinno pomóc.
Go to the top of the page
+Quote Post
nospor
post
Post #17





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




Tez chcialem zaproponowac (float) ale uznalem, ze allegro tego nie lyknie. Ale pewnie masz racje, tym bardziej ze to przerabiales wink.gif


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

"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
phpion
post
Post #18





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Łyknie smile.gif stringów nie łyka.
Go to the top of the page
+Quote Post
mario99228
post
Post #19





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 30.01.2014

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


Łyknęło, dzięki !

Działający kod.

  1. try{
  2. $allegro = new AllegroWebAPI();
  3. $allegro->Login();
  4. $sold = $allegro->objectToArray($allegro->MyAccount2(
  5. array('account-type' => 'sold',
  6. 'offset' => '0',
  7. 'items-array' => array(),
  8. 'limit' => 25))
  9. );
  10. }catch(SoapFault $sold){echo 'Erorr code';}
  11.  
  12. $tab = array();
  13. foreach($sold as $id){
  14. $tab[] = (float)$id['my-account-array'][0];
  15. }
  16.  
  17. $data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
  18.  
  19. print_r('<pre>');
  20. var_dump($data);
  21. print_r('</pre>');


Ten post edytował mario99228 31.01.2014, 15:02:19
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: 21.08.2025 - 12:49