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;
}

所需的解决方案:

用 for 替换 foreach 并在 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>';
}

如果不是,当您达到所需的照片数量时,您必须使用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;
}

此外,正如在下面的评论中所写的那样,$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 回答