就像问题说我在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]]; ?>">
答案 0 :(得分:1)
因为你只需要一个数组元素,你可以将(随机)选择和显示组合到一个方便的单行:
echo $masonry_classes[array_rand($masonry_classes)];
参考:array_rand()
答案 1 :(得分:1)
看起来你误解了array_rand
是如何运作的。
如果您没有指定第二个参数或将其设置为1
,则该函数将返回一个整数,该整数是数组中随机条目的索引。
如果将第二个参数设置为大于1
的数字,则该函数将返回一组随机选择的索引。
所以,如果你这样做:
$rand = array_rand($masonry_classes);
...您最终将使用0
或1
(因为您的数组包含两个索引分别为0
和1
的条目)。在这种情况下,你可以做
$class = $masonry_classes[array_rand($masonry_classes)];
检索一个随机类以及以下内容进行打印:
class="<?php print $class; ?>"
如果你这样做
$rand = array_rand($masonry_classes, 2);
然后它将返回2个随机索引,在您的情况下是0
和1
。
要检索匹配的条目,您现在必须执行以下操作:
$classes = array_intersect_key($masonry_classes, array_flip($rand));
要在HTML中呈现它们,只需执行以下连接:
class="<?php print join(' ', $classes); ?>"