В моем скрипте PHP есть следующая ситуация:
foreach( $recent_posts as $recent ) { /* something happens in here */ }
А также:
foreach ($thumbnails as $thumbnail) { if ( has_post_thumbnail($thumbnail->ID)) { /* something other happens */ } }
Я хотел бы объединить эти два предложения foreach
вместе. Я видел здесь несколько решений, но для меня ничего не работает.
edit: я хочу сделать что-то вроде этого
echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '"> '. $recent["post_title"] . get_the_post_thumbnail($thumbnail->ID, 'thumbnail', array('class' => 'beitragimg')).' </a>';
Начиная с PHP 5.3.0 , для этого можно использовать класс MultipleIterator [PHP.net] :
$a = new MultipleIterator(); $a->attachIterator(new ArrayIterator($recent_posts), 'recent'); $a->attachIterator(new ArrayIterator($thumbnails), 'thumbnail'); foreach ($a as $unit) { // $unit['recent'] // $unit['thumbnail'] if (has_post_thumbnail($unit['thumbnail']->ID)) { /* something other happens */ } }
Вы можете использовать array_map
$a = ['red','yello','green'] ; $b = ['apple','banna','mango']; foreach(array_map(null, $a, $b) as $combined) { vprintf("%s %s\n", $combined); }
Вывод
red apple yello banna green mango
Угадав, что вы хотите что-то подобное этому, но это немного зависит от значений ваших переменных.
foreach( $recent_posts as $key => $recent ) { $thumbnail = $thumbnails[$key]; if( has_post_thumbnail( $thumbnail->ID ) ) { } }