试图获取随机数组值以在元素类上进行回显

时间:2015-09-03 22:05:20

标签: php arrays

就像问题说我在php中使用array_rand函数一样,我的目标是让这个函数在我的循环中随机生成一个类。目前它只是每次打印数组中的第二个值。我怎样才能在循环中为这个回显一个随机类?

if ($featured_query->have_posts()) :   

                    while ($featured_query->have_posts()) :  

                        $featured_query->the_post(); 
                        $masonry_classes = array(
                        'grid-item',
                        'grid-item--width2'
                        );
                    $random_class = array_rand($masonry_classes, 2);
                         ?>
                    <li <?php //post_class( $classes ); ?> class="<?php echo $masonry_classes[$random_class[1]]; ?>">

2 个答案:

答案 0 :(得分:1)

因为你只需要一个数组元素,你可以将(随机)选择和显示组合到一个方便的单行:

echo $masonry_classes[array_rand($masonry_classes)];

参考:array_rand()

答案 1 :(得分:1)

看起来你误解了array_rand是如何运作的。

如果您没有指定第二个参数或将其设置为1,则该函数将返回一个整数,该整数是数组中随机条目的索引。

如果将第二个参数设置为大于1的数字,则该函数将返回一组随机选择的索引。

所以,如果你这样做:

$rand = array_rand($masonry_classes);

...您最终将使用01(因为您的数组包含两个索引分别为01的条目)。在这种情况下,你可以做

$class = $masonry_classes[array_rand($masonry_classes)];

检索一个随机类以及以下内容进行打印:

class="<?php print $class; ?>"

如果你这样做

$rand = array_rand($masonry_classes, 2);

然后它将返回2个随机索引,在您的情况下是01

要检索匹配的条目,您现在必须执行以下操作:

$classes = array_intersect_key($masonry_classes, array_flip($rand));

要在HTML中呈现它们,只需执行以下连接:

class="<?php print join(' ', $classes); ?>"