取消选择数组时为foreach()提供的参数无效

时间:2014-11-14 20:35:43

标签: php foreach arguments flickr advanced-custom-fields

下面的代码显示了一个与高级自定义字段一起使用的插件中的闪烁图像数组。我遇到的问题是,如果我之前选择了一个要显示的图库但现在取消选择它我会收到错误'警告:为...中的foreach()提供的参数无效''

我该如何解决这个问题?显然,如果没有选择任何东西或取消选择某些东西,它就不应输出任何内容。

谢谢,这是我第一次使用stackoverflow,所以我感谢任何帮助,请温柔,我非常喜欢php。 :)

<?php
$flickr_set = get_field(post_flickr_set);
echo '<div #id="flickr-set" class="flickr-gallery">';
if (isset($flickr_set['items'])) {
    foreach ($flickr_set['items'] as $id => $photos) {
        foreach ($photos as $photo) {
            echo '<a href="' . $photo['large'] . '" title="' . $photo['title'] . '"><img src="' . $photo['thumb'] . '" /></a>';
        }
    }
echo '</div><!-- end flickr-set -->';
}

?>

1 个答案:

答案 0 :(得分:1)

您只需要检查该值是否也是一个数组:

$flickr_set = get_field(post_flickr_set);
// You can do a var_dump($flickr_set); to see what you are actually getting.
// Perhaps $flickr_set['items'] == false so it may get set, but not as an array to loop through

echo '<div #id="flickr-set" class="flickr-gallery">';

// The foreach() requires an array, so if $flickr_set['items']
// is not an array, foreach() will throw an error
// If this value is an array but is empty, you can use !empty($flickr_set['items'])
if (isset($flickr_set['items']) && is_array($flickr_set['items'])) {
    foreach ($flickr_set['items'] as $id => $photos) {
        foreach ($photos as $photo) {
            echo '<a href="' . $photo['large'] . '" title="' . $photo['title'] . '"><img src="' . $photo['thumb'] . '" /></a>';
        }
    }
echo '</div><!-- end flickr-set -->';
}