0

問題:

画像をプルするのに最適な foreach ループがありますが、それを for ループに置き換えようとすると、コードと画像が壊れます。

PHP コード:

// Create counter
$i = 0;

// Set number of photos to show
$count = 5;

// Set height and width for photos
$size = '100';

// Show results
foreach ($media->data as $data) 
{
    // Show photo
    echo '<p><img src="'.$data->images->thumbnail->url.'" height="'.$size.'" width="'.$size.'" alt="Instagram bild"></p>';

    // Abort when number of photos has been reached
    if (++$i == $count) break;
}

望ましい解決策:

foreach を for に置き換え、代わりに for ループでカウンターを設定します。これはおそらく本当に簡単ですが、何らかの理由で私は今完全に立ち往生しています。

4

3 に答える 3

2

これは、$media->data変数にインデックスを付けることができる場合です。

<?php
// Create counter
$i = 0;

// Set number of photos to show
$count = 5;

// Set height and width for photos
$size = '100';

// Show results
for ($i = 0; $i < $count; $i++) 
{
    $data = $media->data[$i];
    // Show photo
    echo '<p><img src="'.$data->images->thumbnail->url.'" height="'.$size.'" width="'.$size.'" alt="Instagram bild"></p>';
}

そうでない場合は、使用する必要foreachforありますが、必要な写真の数に達したらループを終了します。

<?php
// Create counter
$i = 0;

// Set number of photos to show
$count = 5;

// Set height and width for photos
$size = '100';

// Show results
foreach ($media->data as $data) 
{
    // Show photo
    echo '<p><img src="'.$data->images->thumbnail->url.'" height="'.$size.'" width="'.$size.'" alt="Instagram bild"></p>';

    // Abort when number of photos has been reached
    if (++$i == $count) 
        break;
}

また、以下のコメントに書かれているように、$media->data画像が 5 つ未満の場合は、変数のサイズを確認することをお勧めします。次のようなものを作成できます。

$count = (count($media->data) < 5)? count($media->data): 5;
于 2012-10-27T07:09:50.520 に答える
1

ループに入る前に正しいカウントを決定すると、初期化コードをループコードから分離して、各反復のチェックを節約できます。

が数値インデックスを持つ配列であるとcount仮定すると、このような関数とインデックス付けは機能します。$media>data

しかし、私はあなたがこれをする理由がわからないことを認めなければなりません。foreachループも同様に簡単です。

// Set number of photos to show
$count = count($media->data);
if ($count > 5)
    $count = 5;
// Set height and width for photos
$size = '100';

// Show results
for ($i = 0; $i < $count; $i++)
{
    // Use $i as an index to get the right item.
    $data = $media->data[$i];
    echo '<p><img src="'.$data->images->thumbnail->url.'" height="'.$size.'" width="'.$size.'" alt="Instagram bild"></p>';
}
于 2012-10-27T07:13:02.530 に答える
0
$limit = 5;

for($i = 0; $i < count($media->data) && $i < $limit; $i++) {
    echo '<p><img src="'.$media->data[$i]->images->thumbnail->url.'" height="'.$size.'" width="'.$size.'" alt="Instagram bild"></p>';
}
于 2012-10-27T07:09:25.757 に答える