Jak się dostać do elementu tablicy?

0

Witam,
Mam problem jeszcze z tablicami w php. Nie moge dostac sie do 4267794077 z tego ciagu:

 Array(10) {
  [0]=> object(stdClass)#2 (1) {
    ["my-account-array"]=> array(38) {
      [0]=> string(10) "4267794077"
      [1]=> string(4) "0.00"

Probuje rozne cuda ale nie moge tego wyswietlic. Chcialbym proste echo...

0
$varname = "my-account-array";
$value = (array[0]->$varname)[0];

Ale to my-account-array mi nie pasuje coś tutaj ;p

0

Dostalem:

Parse error: syntax error, unexpected '[', expecting '(' in

0

Ponieważ w miejsce

array[0]

powinienieś wstawić swoją zmienną czyli $mojaTablica[0]

0

Parse error: syntax error, unexpected '[' in
gdy:

$auctions = $client->doMyAccount2($session_handler,'sell',50,$oferty,10);
var_dump($auctions);
$varname = "my-account-array";
$value = ($auctions[0]->$varname)[0];
echo $value; 

jezeli zakomentuje przedostatnia linie to oczywiscie var_dump sie odpala i dostaje w/w tablice

dodanie znacznika <code class="php"> - furious programming

1

zapewne wersja PHP starsza niż 5.4

Zaktualizuj (nie podam składni działającej w starszych, bo stare wersje trzeba eliminować ;))

0

A mogłbyś napisać o co kaman?:>
Widziałem że w pytaniach na interview pojawiaja się czasami "Jakie zostały wprowadzone róznice miedzy php X.X a php Y.Y?"... już bym miał jedną jakbym kiedyś był na tyle dobry zeby szukać pracy jako junior php :P

1

Cóż, łatwiej Ci będzie utrzymać się w tej pracy jak będziesz wykazywał na tyle minimum inicjatywy, żeby takie pierdoły odnaleźć samemu ;)

0

Właśnie się dowiedziałem ze niestety na serwerze na którym ma działać moduł, nie mogę zaktualizować php. Teraz jest wersja 5.3 a strona się sypie na 5.4 i nie zależy to ode mnie. Jest opcja dostać sie w <5.4 do tej tablicy?

Ps. Znalazłem info w changelogu o skladni tablic... Która niestety nie do końca kumam hehe ;)

1
$tmp_value = $auctions[0]->$varname;
$value = $tmp_value[0];
0

Dziala dziala dziala dziala!
Dziekuje, ale jest problem taki ze nie mam pojecia cos sie stalo i dlaczego nie moglem dostac sie do tego typowo np. $array[0][0][0].

dodanie znacznika `` - furious programming

0

nie rozumiem, opisz szerzej

0

Własnie ja też.
Czy to ma coś wspólnego z tym że w sródku tablicy mamy obiekty? W var_dumpie znalazłem takie coś jak object(stdClass)#2.
Zawsze myślałem że moge się dostać do elementów tablicy poprzez jej indexy czyli $array[0][2][1].
Podrzuce kolejną tablice od allegro ;)
http://pastebin.com/G0MNFfjJ

0

w źródle strony masz widoczny dump ze znakami nowej linii, tego się czytać nie da

do elementów obiektów najlepiej odwołuj się poprzez ->

0

Dobra już będe się logował. Post wyżej nie został napisany przeze mnie. Pokręcone to strasznie. Wolałbym operować na indexach gdyż w tym momencie mam nizłą papke. Potrzebuje dostęp do zmiennych w pętli i niestety nie podoba mi się to. Dużo łatwiej byłoby Array[0][2][1] bo mogłbym operwać indexami za pomocą $i itp. A takto musze operawać na stringach, wpisaywać je do tablic itp itd.

No i własnie znów doszedłem do momentu w którym nie moge wyciagnąc stringa.

 
array(3) {
  [0]=>
  object(stdClass)#9 (2) {
    ["image-type"]=>
    int(1)
    ["image-url"]=>
    string(63) "http://img17.allegroimg.pl/photos/128x96/42/67/64/81/4267648121"
  }
  [1]=>
  object(stdClass)#10 (2) {
    ["image-type"]=>
    int(2)
    ["image-url"]=>
    string(64) "http://img17.allegroimg.pl/photos/400x300/42/67/64/81/4267648121"
  }
  [2]=>
  object(stdClass)#11 (2) {
    ["image-type"]=>
    int(3)
    ["image-url"]=>
    string(65) "http://img17.allegroimg.pl/photos/oryginal/42/67/64/81/4267648121"
  }
}

To jest mój kod który zwraca powyższa tablice.

 
    $varname4 = "item-images";
    $varname5 = "image-type";
var_dump($auction->$varname4);

Więc następnym elementem także jest tablica z tego co wnioskuje z var_dump, ale

 
var_dump($auction->$varname4[0]);

daje NULL.

var_dump($auction->$varname4->$varname5)

Takze daje NULL.

Pozdrawiam
Tarv

0

nie no, var_dump($auction->$varname4[0]); musi zwracać coś w tym przykładzie, chyba, że coś ściemniasz :p

możesz zapakować zwrotkę od allegro w serialize i wrzucić na forum? :>

0

pewnie mógłbym tylko nie wiem jak to zrobić.

Strzeliłem i zrobiłem:

var_dump(serialize($auction->$varname4[0]));

otrzymałem:

string(2) "N;"

a:

var_dump(serialize($auction->$varname4));

dało:
string(405) "a:3:{i:0;O:8:"stdClass":2:{s:10:"image-type";i:1;s:9:"image-url";s:63:"http://img17.allegroimg.pl/photos/128x96/42/67/79/55/4267795515";}i:1;O:8:"stdClass":2:{s:10:"image-type";i:2;s:9:"image-url";s:64:"http://img17.allegroimg.pl/photos/400x300/42/67/79/55/4267795515";}i:2;O:8:"stdClass":2:{s:10:"image-type";i:3;s:9:"image-url";s:65:"http://img17.allegroimg.pl/photos/oryginal/42/67/79/55/4267795515";}}"

dodanie znaczników <code class="php"> - furious programming

0

@Stiffler:

wiem o co chodzi. $auction->$varname4[0] jest równoznaczne z $auction->NAZWA_WZIETA_Z_ZEROWEGO_ELEMENTU_TABLICY_varname4 a ponieważ varname4 jest stringiem - to w zasadzie próbujesz pobrać atrybut o pustej nazwie.

Zapewne PHP rzuca Ci tu ostrzeżenie, które wygłuszasz ustawieniami error_reporting i nic nie wiesz.

W PHP5.4 wystarczyłoby `($auction->$varname4)[0], a póki co musisz zadowolić się kolejną protezą:

$dupa = $auction->$varname4;
var_dump($dupa[0]);
0

Dokładnie. Dzięki za odpowiedź, wszystko gra, aczkolwiek wygląda mega dziwnie. Ale ciesze się że poradziliśmy sobie bez updatu php.

0

Można zrobić jeszcze tak:

$auction->{$varname4}[0];

;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1