在foreach中组合两个数组

时间:2013-06-11 11:41:41

标签: php arrays

我的PHP脚本中存在以下情况:

foreach( $recent_posts as $recent ) {
    /* something happens in here */
}

foreach ($thumbnails as $thumbnail) {
   if ( has_post_thumbnail($thumbnail->ID)) {
      /* something other happens */
   }
}

我想将这两个foreach语句组合在一起。 我在这里看到了一些解决方案,但没有什么对我有用。

编辑:我想做类似的事情

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

3 个答案:

答案 0 :(得分:4)

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 */ 
    }
}

答案 1 :(得分:0)

您可以使用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

答案 2 :(得分:-1)

猜猜你想要类似的东西,但根据你变量的值,这是一个猜测。

foreach( $recent_posts as $key => $recent ) {
    $thumbnail = $thumbnails[$key];

    if( has_post_thumbnail( $thumbnail->ID ) )
    {

    }
}