Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dostęp do tablicy
Forum PHP.pl > Forum > PHP
Resurrection
Staram się dostać do tablicy...otrzymuje wartość null mimo że dane pwoinny się tam znajdować...może źle poruszam się po tablicy...więc pytanie jak dostać się do tego żeby wyciągnąć dane:
  1.  
  2. $dogetpostbuyformsdataforsellers_response = array(
  3. 'post-buy-form-data' => array(
  4. 'post-buy-form-id' => 3381748,
  5. 'post-buy-form-items' => array(
  6. 'post-buy-form-it-quantity' => 2,
  7. 'post-buy-form-it-amount' => 20.00,
  8. 'post-buy-form-it-id' => 972090662,
  9. 'post-buy-form-it-title' => 'Oferta testowa',
  10. 'post-buy-form-it-country' => 1,
  11. 'post-buy-form-it-price' => 10.00)
  12. )
  13. )
  14. )
  15. )

i teraz chcę dostać się np: do post-buy-form-it-title

  1. foreach($tablica as $row)
  2. {
  3. $row->{'post-buy-form-id'}; // to odczytuje poprawnie
  4. $row->{ 'post-buy-form-items'}->{'post-buy-form-it-title'};//tu otrzymuje null
  5. $row['post-buy-form-it-title']->{'post-buy-form-it-title'};//tutaj błąd odwołania
  6. }
Szymciosek
Raczej coś takiego

  1. foreach ($tablica as $row)
  2. {
  3. ...
  4. $row['post-buy-form-data']['post-buy-form-items']['post-buy-form-it-title'];
  5. }
Resurrection
Przy takim sosobie odwołania otrzymuje błąd

  1. Cannot use object of type stdClass as array in ....
  2.  
mstraczkowski
Pachnie mi to źle skonstruowaną tablicą.

Jednak gdy usilnie chcesz się dostać do tej wartości to używaj sobie funkcji:
print_r lub var_dump

Pomogą ci on określić jak na prawdę wygląda twoja tablica:

  1. $dogetpostbuyformsdataforsellers_response = array(
  2. 'post-buy-form-data' => array(
  3. 'post-buy-form-id' => 3381748,
  4. 'post-buy-form-items' => array(
  5. 'post-buy-form-it-quantity' => 2,
  6. 'post-buy-form-it-amount' => 20.00,
  7. 'post-buy-form-it-id' => 972090662,
  8. 'post-buy-form-it-title' => 'Oferta testowa',
  9. 'post-buy-form-it-country' => 1,
  10. 'post-buy-form-it-price' => 10.00)
  11. )
  12. )
  13. )
  14. );
  15.  
  16. // Oferta testowa
  17. var_dump($dogetpostbuyformsdataforsellers_response['post-buy-form-data'][0]['post-buy-form-items'][0]['post-buy-form-it-title']);


lub

  1. foreach ($dogetpostbuyformsdataforsellers_response as $row) {
  2. var_dump($row[0]['post-buy-form-items'][0]['post-buy-form-it-title']);
  3. }
Szymciosek
  1. $tablica = array(
  2. 'post-buy-form-data' => array(
  3. 'post-buy-form-id' => 3381748,
  4. 'post-buy-form-items' => array(
  5. 'post-buy-form-it-quantity' => 2,
  6. 'post-buy-form-it-amount' => 20.00,
  7. 'post-buy-form-it-id' => 972090662,
  8. 'post-buy-form-it-title' => 'Oferta testowa',//tutaj
  9. 'post-buy-form-it-country' => 1,
  10. 'post-buy-form-it-price' => 10.00)
  11. )
  12. )
  13. )
  14. );
  15.  
  16. foreach ($tablica as $row)
  17. {
  18. var_dump($row[0]['post-buy-form-items'][0]['post-buy-form-it-title']);
  19. }



Trochę masz namieszane z tą tablicą, którą sobie stworzyłeś.
Resurrection
To nie ja sobie stworzyłem takiego potwora to Allegro i jego WebApi :-) ...a to jest tylko część tej struktury :-)

po zastosowaniu vardump:
  1. var_dump($dogetpostbuyformsdataforsellers_response['post-buy-form-data'][0]['post-buy-form-items'][0]['post-buy-form-it-title']);


jako wynik otrzymuje wartość : NULL

jednak upieram się, że tam musza być dane gdyż ta transakcja została wykonana i poza tym w dalszej części tej struktury tam gdzie jest pojedyncze zagnieżdżenie podaje wszystkie dane, natomiast tam gdzie zagnieżdżenie jest jak przy post-buy-form-it-title otrzymuje wartości null . Te inne wartości to np: adres wysyłki, który klient musiał podać.
Adi32
Allegro zwraca tablicę obiektów.
Resurrection
więc spróbowałem tak

  1.  
  2. $row->{'post-buy-form-data'}['post-buy-form-it-title'] //null
  3.  
  4. $row->{'post-buy-form-data'}['post-buy-form-it-title'][0] // null


gdzie popełniam błąd ?
Adi32
Wklej wynik funkcji:

  1. echo '<pre>';
  2. var_dump($row);
  3. echo '</pre>';
Resurrection
trzeba było odrazu przeanalizować całą strukturę za pomocą var_dump zamiast marudzić na forum ale może się komuś przyda :-)

Kod
$row->{'post-buy-form-items'}[0]->{'post-buy-form-it-title'}


dziękuję wszystkim za pomoc. Zamykam temat
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.