Avatar billede esmic Nybegynder
12. november 2015 - 02:03 Der er 7 kommentarer og
1 løsning

lave iteration over json response fra instagram

Hej

Jeg er lidt ny til php, og har et spørgsmål som følger her.
Jeg vil gerne printe noget json information fra instagram. Jeg kan fint få sidste 5 billedurls fra min private instagram på følgende måde:

<?php
$json = file_get_contents("https://api.instagram.com/v1/users/MITUSERID/media/recent/?access_token=INDSÆTACCESSTOKEN&count=5");
$data = json_decode($json);


$images = array();
foreach( $data->data as $user_data ) {
    $images[] = (array) $user_data->images->standard_resolution->url;

$sidstefemURL = json_encode($images);
  echo $sidstefemURL;
?>

Jeg vil dog gerne have urls med tagget hatogbriller, og dette har jeg lidt svært ved at forstå hvordan jeg skal gøre.

mange tak på forhånd
Avatar billede arne_v Ekspert
12. november 2015 - 02:33 #1
Hvis tags er et sted i den struktur du har i $data saa skal du vel have en if indeni din foreach.
Avatar billede esmic Nybegynder
12. november 2015 - 03:32 #2
man kan ikke skrive det sådan her men ideen er der

if($data["tags"]=='hatogbriller'){
$images = array();
foreach( $data->data as $user_data ) {
    $images[] = (array) $user_data->images->standard_resolution->url;
}
}
$urlsmedtag = json_encode($images);
  print_r ($urlsmedtag);

---her kan man se standard json formen fra insta (den respons man får)

{
    "data": [{
        "comments": {
            "data": [],
            "count": 0
        },
        "caption": {
            "created_time": "1296710352",
            "text": "Inside le truc #foodtruck",
            "from": {
                "username": "kevin",
                "full_name": "Kevin Systrom",
                "type": "user",
                "id": "3"
            },
            "id": "26621408"
        },
        "likes": {
            "count": 15,
            "data": [{
                "username": "mikeyk",
                "full_name": "Mike Krieger",
                "id": "4",
                "profile_picture": "..."
            }, {...subset of likers...}]
        },
        "link": "http://instagr.am/p/BWrVZ/",
        "user": {
            "username": "kevin",
            "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_3_75sq_1295574122.jpg",
            "id": "3"
        },
        "created_time": "1296710327",
        "images": {
            "low_resolution": {
                "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/6ea7baea55774c5e81e7e3e1f6e791a7_6.jpg",
                "width": 306,
                "height": 306
            },
            "thumbnail": {
                "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/6ea7baea55774c5e81e7e3e1f6e791a7_5.jpg",
                "width": 150,
                "height": 150
            },
            "standard_resolution": {
                "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/6ea7baea55774c5e81e7e3e1f6e791a7_7.jpg",
                "width": 612,
                "height": 612
            }
        },
        "type": "image",
        "users_in_photo": [],
        "filter": "Earlybird",
        "tags": ["foodtruck"],
        "id": "22721881",
        "location": {
            "latitude": 37.778720183610183,
            "longitude": -122.3962783813477,
            "id": "520640",
            "street_address": "",
            "name": "Le Truc"
        }
    }
Avatar billede arne_v Ekspert
12. november 2015 - 03:51 #3
Nej.

Snarere noget a la:

$images = array();
foreach( $data->data as $user_data ) {
    if( in_array( 'foodtruck', $user_data->tags )) {
        $images[] = (array) $user_data->images->standard_resolution->url;
    }
}
Avatar billede esmic Nybegynder
12. november 2015 - 04:01 #4
jeg tænkte det bare sådan hvis noden tags=foodtruck var der, så lav foreach iteration. Jeg må tage et kursus. Tusind tak for hjælpen.
Avatar billede esmic Nybegynder
12. november 2015 - 04:02 #5
Omg hvordan kan jeg give mig selv point. De er til dig arne_v :(
Avatar billede arne_v Ekspert
12. november 2015 - 04:13 #6
Hvis du vil saa kan du bruge metoden i http://www.eksperten.dk/faq#faq-5-3 til at give de point.
Avatar billede arne_v Ekspert
12. november 2015 - 04:14 #7
if {
  foreach {
    ...
  }
}

vil enten give ingen eller alle images.

foreach {
    if {
        ...
    }
}

vil give alle de images som opfylder betingelsen
Avatar billede esmic Nybegynder
12. november 2015 - 04:23 #8
jeg har lavet et spørgsmål du lige kan kommentere på så du kan få dine point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester