PHP Array values benaderen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Brouns

Jeroen Brouns

01/01/2014 18:46:04
Quote Anchor link
Een gelukkig nieuwjaar allemaal!

Voor school ben ik met een project bezig dat gebruik maakt van JSON.

Als voorbeeld:
https://api.eet.nu/venues?query=:pizza
Deze pagina weergeeft JSON formated informatie. Deze output vang ik op mijn pagina op met cURL waaruit ik uiteindelijk deze decode met de json_decode() functie. Dit werkt natuurlijk allemaal goed.

Nu moet ik dus verschillende values gaan benaderen uit deze informatie.
Stel ik wil het eerste ID printen had ik in gedachten:

Quote:

..hierboven staat de cURL functie...

$result = json_decode($result, true);

print $result->results[1]->id;


Aangezien ik geen output krijg (een lege pagina), zal dit wel fout zijn.

Heeft iemand enig idee hoe ik de values moet benaderen?




Een beter overzicht van het betreffende JSON format:
Afbeelding

Toevoeging op 01/01/2014 18:48:30:

P.S. Heeft iemand een beter idee voor het managen van deze array's en objecten in PHP?

Toevoeging op 01/01/2014 19:15:29:

Eerste stukje van de var_dump:

array(3) { ["results"]=> array(50) { [0]=> array(18) { ["id"]=> int(17432) ["name"]=> string(12) "Pizza Alvino" ["category"]=> string(8) "Pizzeria" ["telephone"]=> string(11) "0182-582212" ["fax"]=> NULL ["website_url"]=> string(27) "http://www.pizza-alvino.nl/" ["tagline"]=> NULL ["rating"]=> int(93) ["url"]=> string(36) "http://www.eet.nu/gouda/pizza-alvino" ["created_at"]=> string(20) "2009-01-27T08:39:03Z" ["updated_at"]=> string(20) "2013-09-24T02:09:51Z" ["address"]=> array(5) { ["street"]=> string(15) "Nieuwehaven 159" ["zipcode"]=> string(7) "2801 CW" ["city"]=> string(5) "Gouda" ["region"]=> string(12) "Zuid-Holland" ["country"]=> string(15) "The Netherlands" } ["plan"]=> string(7) "regular" ["images"]=> array(2) { ["original"]=> array(0) { } ["cropped"]=> array(0) { } } ["resources"]=> array(5) { ["self"]=> string(30) "http://api.eet.nu/venues/17432" ["reviews"]=> string(38) "http://api.eet.nu/venues/17432/reviews" ["country"]=> string(32) "http://api.eet.nu/locations/1974" ["region"]=> string(30) "http://api.eet.nu/locations/12" ["city"]=> string(31) "http://api.eet.nu/locations/230" } ["geolocation"]=> array(2) { ["latitude"]=> float(52.0126991) ["longitude"]=> float(4.7064099) } ["counters"]=> array(3) { ["images"]=> int(0) ["menus"]=> int(0) ["reviews"]=> int(20) } ["relevance"]=> float(3.4295008) } [1]=> array(18) { ["id"]=> int(13344) ["name"]=> string(10) "Best Pizza" ["category"]=> string(8) "Pizzeria" ["telephone"]=> string(11) "045-5251905" ["fax"]=> NULL ["website_url"]=> string(23) "http://www.bestpizza.nl" ["tagline"]=> NULL ["rating"]=> int(86) ["url"]=> string(37) "http://www.eet.nu/brunssum/best-pizza" ["created_at"]=> string(20) "2009-01-27T08:25:00Z" ["updated_at"]=> string(20) "2013-12-20T03:09:26Z" ["address"]=> array(5) { ["street"]=> string(15) "Peerdendries 77" ["zipcode"]=> string(7) "6442 AT" ["city"]=>
Gewijzigd op 01/01/2014 18:47:46 door Jeroen Brouns
 
PHP hulp

PHP hulp

24/12/2024 17:15:46
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/01/2014 19:40:41
Quote Anchor link
probeer ook eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
print $result->results[0]->id;
?>


en anders wat krijg je als je doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<pre>';
print_r($result);
echo '</pre>';
?>
 
Wouter J

Wouter J

01/01/2014 19:45:37
Quote Anchor link
Met de 2e parameter op 'true' zal json_decode een array terug geven: $result[0]['id'] of $result[1]['id'], ...
Gewijzigd op 01/01/2014 19:46:08 door Wouter J
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/01/2014 19:51:11
Quote Anchor link
Inderdaad Wouter. gewoon dit doen dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$result
= json_decode($result);

print $result->results[0]->id;
?>
 
Wouter J

Wouter J

01/01/2014 19:54:59
Quote Anchor link
Frank, waarom? Dit is toch juist perfect om met arrays te werken, aangezien je numeric keys hebt?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/01/2014 20:11:11
Quote Anchor link
Uiteraard kan dat ook wouter. Maar wat gaat het dan worden?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo result['results'][0]['id']; // ????
?>
Gewijzigd op 01/01/2014 20:11:53 door Frank Nietbelangrijk
 
Wouter J

Wouter J

01/01/2014 20:19:50
Quote Anchor link
Frank, wat ik vertelde in mijn reactie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $result[0]['id'];
?>


En daarom raad ik dus aan array hier te gebruiken; numeric keys en StdClass objecten werken niet zo fijn samen.


Sorry, verkeerd begrepen. $result['results'][0]['id'] inderdaad.
Gewijzigd op 01/01/2014 20:20:45 door Wouter J
 
Jeroen Brouns

Jeroen Brouns

01/01/2014 21:35:49
Quote Anchor link
Ik heb de true weggehaald bij de json_decode()..hij werkt nu. Bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.