mario99228
30.01.2014, 22:05:27
Witam, mam taką tablice.
Array ([0] => 3893398399 [1] => 3871644589 [2] => 3863500376)
a potrzebuje żeby wyglądała tak.
Array (3893198399, 3871644189, 3863500376)
Jak to zrobić ? i czy się da? niestety dla APIAllegro jest różnica miedzy jednym a drugim.
tomxx
30.01.2014, 22:12:43
Nie da się, bo indeksy (0, 1, 2...) są dodawane przez PHP automatycznie (jeśli samemu się ich nie poda).
Kshyhoo
30.01.2014, 22:27:33
serializeEw.:
$t[0] = 3893398399;
$t[1] = 3871644589;
$t[2] = 3863500376;
Crozin
30.01.2014, 23:00:48
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).
mario99228
30.01.2014, 23:23:08
Chce pobrać dane kupujących z allegro za pomocą API i metody GetPostBuyData();
parametr jaki przyjmuje to tablica Array z id z aukcji.
$tab = Array ( [0
] => 3893198399
[1
] => 3871644189
[2
] => 3863500376
)
$allegro->objectToArray($allegro->GetPostBuyData($tab));
//zwraca pusta tablice.
$tab2 = Array (3893198399
, 3871644189
, 3863500376
);
$allegro->objectToArray($allegro->GetPostBuyData($tab2));
//zwraca poprawne dane
Dlaczego tak się dzieje?
phpion
31.01.2014, 08:38:14
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?
-mario99228-
31.01.2014, 13:40:19
Mam taki kod.
try{
$allegro = new AllegroWebAPI();
$allegro->Login();
$sold = $allegro->objectToArray($allegro->MyAccount2(
array('account-type' => 'sold', 'offset' => '0',
'items-array' => array(), 'limit' => 25))
);
}catch
(SoapFault
$sold){echo 'Erorr code';}
foreach($sold as $id){
$tab[] = $id['my-account-array'][0];
}
$data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
nospor
31.01.2014, 13:44:21
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
mario99228
31.01.2014, 14:03:00
$data zwraca puste tablice, $tab zwraca nr aukcji.
//var_dump($data);
[0]=>
["item-id"]=>
int(2147483647)
["users-post-buy-data"]=>
}
}
[1]=>
["item-id"]=>
int(2147483647)
["users-post-buy-data"]=>
}
}
[2]=>
["item-id"]=>
int(2147483647)
["users-post-buy-data"]=>
}
}
}
//var_dump($tab);
[0]=>
string(10) "3893198349"
[1]=>
string(10) "3871644149"
[2]=>
string(10) "3863500346"
}
Greg0
31.01.2014, 14:04:05
takie zdefiniowanie tablicy
$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.
nospor
31.01.2014, 14:06:17
Tak, chodzilo mi o $tab
Sprobuj zrzutowac to na INT
$tab[] = (int)$id['my-account-array'][0];
mario99228
31.01.2014, 14:16:01
Zwraca.
[0]=>
int(2147483647)
[1]=>
int(2147483647)
[2]=>
int(2147483647)
}
$data puste. Jeśli tablice z nr aukcji zdefiniuje w ten sposób
$allegro = new AllegroWebAPI();
$allegro->Login();
$sold = $allegro->objectToArray($allegro->MyAccount2(
array('account-type' => 'sold', 'offset' => '0',
'items-array' => array(), 'limit' => 25))
);
}catch
(SoapFault
$sold){echo 'Erorr code';}
/*
$tab = array();
foreach($sold as $id){
$tab[] = (int)$id['my-account-array'][0];
//$tab[] = $id['my-account-array'][0];
}
*/
$tab = Array(3893198399
, 3871644189
, 3863500376
); $data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
Zwraca dane dla 3 aukcji.
nospor
31.01.2014, 14:24:14
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
mario99228
31.01.2014, 14:36:23
Poniżej oryginalne dane które są zwracane.
//var_dump($tab) zwraca
[0]=>
string(10) "3893198399"
[1]=>
string(10) "3871644189"
[2]=>
string(10) "3863500376"
}
$data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
//var_dump($data) zwraca
[0]=>
["item-id"]=>
int(2147483647)
["users-post-buy-data"]=>
}
}
[1]=>
["item-id"]=>
int(2147483647)
["users-post-buy-data"]=>
}
}
[2]=>
["item-id"]=>
int(2147483647)
["users-post-buy-data"]=>
}
}
}
// Przykład działający.
$tab = array(3893198399
, 3871644189
, 3863500376
); $data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
Niepotrzebnie zmieniłem oryginalne dane, faktycznie mogło to wprowadzić niepotrzebny zamęt.
nospor
31.01.2014, 14:41:27
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
phpion
31.01.2014, 14:46:11
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.
nospor
31.01.2014, 14:48:33
Tez chcialem zaproponowac (float) ale uznalem, ze allegro tego nie lyknie. Ale pewnie masz racje, tym bardziej ze to przerabiales
phpion
31.01.2014, 14:49:48
Łyknie

stringów nie łyka.
mario99228
31.01.2014, 15:01:41
Łyknęło, dzięki !
Działający kod.
try{
$allegro = new AllegroWebAPI();
$allegro->Login();
$sold = $allegro->objectToArray($allegro->MyAccount2(
array('account-type' => 'sold', 'offset' => '0',
'items-array' => array(), 'limit' => 25))
);
}catch
(SoapFault
$sold){echo 'Erorr code';}
foreach($sold as $id){
$tab[] = (float)$id['my-account-array'][0];
}
$data = $allegro->objectToArray($allegro->GetPostBuyData($tab));
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.