2017-06-21 4 views
1

Ich verwende das folgende Skript, um Bilder von Instagram basierend auf Hashtag anzuzeigen. Es funktioniert perfekt und listet alle von Instagram verfügbaren Bilder auf - bis zu 20 Bilder.PHP: looping - wie man max Elemente hinzufügen

Allerdings würde ich gerne weniger zeigen können, sagen 10 oder 12 Bilder.

Wie kann ich eine Art Variable hinzufügen, um einen maximalen Wert zu speichern, so dass der foreach-Loop nicht alle Elemente wiederholt?

PHP:

<?php 
    // Enter hashtag; 
    $hashtag = "nofilter"; 
    $url = "https://www.instagram.com/explore/tags/".$hashtag."/"; 
    $instagram_content = file_get_contents($url); 
    preg_match_all('/window._sharedData = (.*)\;\<\/script\>/', $instagram_content, $matches); 
    $txt = implode('', $matches[1]); 
    $json = json_decode($txt); 

    foreach ($json->entry_data->TagPage{0}->tag->media->nodes AS $item) { 
     echo "<div class='imgbox'><a href='http://instagram.com/p/".$item->code."' target='_blank'><img class='hashtag' src='" . $item->display_src . "' alt=''></a></div>"; 
    } 
    ?> 
+0

"eine Art Variable" wie ein Land ter? – j08691

+0

Ja, wie: $ noOfImages = 12; - und dann würde die Foreach nur 12 Bilder durchlaufen. – Meek

Antwort

0

wenn Sie 1-12 Bilder und andere nicht, dann verwenden Zähler zeigen wollen. in diesem Code, wenn der Zähler größer als 12 ist, dann wird die Schleife unterbrochen, so dass nur 1-12 Bild zeigt

+0

Genau so. Danke vielmals. – Meek

+0

bist du willkommen und mach weiter –

+0

@Meek wenn es dir hilft dann kannst du mir abstimmen. –

0

Einfach. Verwenden Sie eine Zählervariable.

$loop_count = 0; 
$max = 12; 
foreach ($things as $thing) { 
    if ($loop_count >= $max) { 
     break; 
    } 

    // Do loop logic here 

    $loop_count++; 
} 
0

Verwenden einer for loop:

for ($i = 0; $i < 12; $i++) { 
    $item = $json->entry_data->TagPage{0}->tag->media->nodes[$i]; 
    echo "<div class='imgbox'><a href='http://instagram.com/p/".$item->code."' target='_blank'><img class='hashtag' src='" . $item->display_src . "' alt=''></a></div>"; 
} 
0

Wenn ein Array Nummer indiziert wird dann diese Arbeit

foreach ($list as $index => $value) { 
    if ($index > 12) break; 
    //do something 
} 

im Fall implementiert ist als das folgende:

<?php 
    // Enter hashtag; 
    $hashtag = "nofilter"; 
    $url = "https://www.instagram.com/explore/tags/".$hashtag."/"; 
    $instagram_content = file_get_contents($url); 
    preg_match_all('/window._sharedData = (.*)\;\<\/script\>/', $instagram_content, $matches); 
    $txt = implode('', $matches[1]); 
    $json = json_decode($txt); 

    foreach ($json->entry_data->TagPage{0}->tag->media->nodes AS $index => $item) { 
     if ($index > 12) break; 
     echo "<div class='imgbox'><a href='http://instagram.com/p/".$item->code."' target='_blank'><img class='hashtag' src='" . $item->display_src . "' alt=''></a></div>"; 
    } 
    ?>