2017-03-21 8 views
0

次のコードは、jsonファイルからすべての画像を取り込みます。PHPで最後の2つのjson_decode結果を取得

$content = file_get_contents('URL'); 
    $json = json_decode($content, true); 

    foreach($json['format'] as $item) { 
      echo '<img src="' . $item['picture'] . '">'; 
    } 

最後の2枚の画像しか取り込めない方法がありますか?

+4

[PHPでforeachループを使用しながら、配列の最後の要素を検索](http://stackoverflow.com/questions/665135/の可能性のある重複最後にfind-the-last-element-of-a-foreach-loop-in-phpを使用しています –

+2

'array_pop'、' array_pop' –

答えて

1

はい、方法があります。

$result = array_slice($json['format'], -2); 

お試しください。

+0

私のオリジナル投稿のコードに基づいて、その行? –

+0

foreachループの直前に 'foreach($ result as $ item){...}'があります。 – Marcel

+0

それは動作します!ありがとう –

0

使用この:

$numItems = count(foreach($json['format']); 
$i = 0; 
foreach($json['format'] as $item) { 
    if(++$i === $numItems-1) { 
    result1 = $json['format'][$i] 
    echo "first picture!"; 
    } if(++$i === $numItems) { 
    result2 = $json['format'][$i] 
    echo "second picture!"; 
    } 
}  

そして結果1と結果2あなたの写真が

0

であるあなたは、配列の順序を逆にあなたのforeachループで逆方向にそれを実行し、その後破る最初の二つをつかむことができます。

$reversed = array_reverse($json); 
$counter = 0; 
foreach ($reversed['format'] as $item) { 
    if ($counter == 2) { 
      break; 
    } 
    //your echo image code 
++$counter; 
} 
0

array_popを使用して私のバージョン:

$content = file_get_contents('URL'); 
$json = json_decode($content, true); 

// take last element of array, array reduces by 1 element 
$last = array_pop($json['format']); 
print_r($last); 

// take last element of array again, array reduces by 1 element 
$last = array_pop($json['format']); 
print_r($last); 

// Beware - using `$json['format']` later means that 
// you use array without two last elements 
関連する問題