2014-11-14 5 views
0

В приведенном ниже коде показан массив изображений мерцания из плагина, который работает с расширенными настраиваемыми полями. Проблема в том, что если я ранее выбрал галерею для показа, но теперь отменим ее выбор, я получаю сообщение об ошибке «Предупреждение: неверный аргумент, предоставленный foreach() in ...»Недопустимый аргумент, предоставленный 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 -->'; 
} 

?> 

ответ

0

Вы просто должны проверить, если значение также является массивом, как:

$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 -->'; 
} 
+0

Wow, что является удивительным спасибо !!!!! я бы никогда не подумал об этом. – jeffreyd00

+0

Нет проблем, мне потребовалось много времени, чтобы понять это, когда я начал изучать php. Я думал, что исправить было просто отключить отчет об ошибках ...... yikes! ура – Rasclatt