我是PHP的新手,但我已经构建了一些相当简单的WordPress主题。我试图创造一些独特的东西,而且我不确定如何实现它(或者甚至可能实现它)。
我的目标是创建一个循环,当它到达列时动态关闭行" 12"计算引导程序(IE:col-md-3 + col-md-3 + col-md-6 = 12)。我最终想要实现的目标以及我当前如何设置静态文件=> https://jsfiddle.net/y2mLr3hd/7/embedded/result/。我只使用" display:flex;"现在只是为了展示我想要实现的目标。我希望它只是行而不是单行。
我使用UL和LI来使用WordPress的标准循环,但我不知道如何去做我想做的事情。我喜欢循环来计算列大小的随机数,包括列大小" 3,4,6,8和#34;并创建列大小等于" 12"就像我之前说的那样。那或者找到一种方法,让它以我目前设置的方式工作。
这是我所寻找的最接近的事情,但即便关闭=> https://stackoverflow.com/questions/16427962/twitter-bootstrap-spans-in-dynamic-websites#=也是如此。以下是该链接的代码,以供快速参考:
$i=0;
foreach ($posts as $post):
if ($i%2==0) echo '<div class="row-fluid">';
echo '<div class="span6">'. $post->content .'</div>';
if ($i%2==1) echo '</div>';
$i++;
endforeach;
任何关于我如何能够解决这个问题的帮助都会非常感激!
答案 0 :(得分:2)
您的问题分为两部分:
第一个更像是一个数学问题。请注意,您只能组合3s和6s,或4s和8s。你不能将3和4结合起来,仍然可以得到12。
我们将设计一个简单的算法:
function getRandomNumbers()
{
// We start with an empty array and add numbers until we hit 12.
$result = array();
// We choose either 3 or 4 as basic number.
$x = mt_rand(3, 4);
// Now, as long as we don't hit 12, we iterate through a loop,
// adding either the basic number, or 2 times the basic number:
while (array_sum($result) < 12) {
// Randomly decide
if (mt_rand(0, 1) > 0) {
$newElement = 2 * $x; // This is either 6 or 8
// However, always make sure not to exceed 12:
if (array_sum($result) + $newElement > 12) {
$newElement = $x;
}
} else {
$newElement = $x; // This is either 3 or 4
}
// Add the new number to the array:
$result[] = $newElement;
}
// Return the resulting array
return $result;
}
现在我们需要使用这些数组来创建行。我们首先使用我们编写的函数生成一个包含随机数的数组。
我们将简单地遍历帖子,使用数组中的数字直到没有剩下的数字。每当我们需要一个新数组时,我们将生成一个包含随机数的新数组。因为这意味着我们已经添加了12个宽度值的列,这也是我们需要开始新行的点。
// Get the initial array with random numbers
$randomArray = getRandomNumbers();
// Open the initial row.
echo '<div>';
foreach ($posts as $post):
if (count($randomArray) < 1) {
// Close the row and start a new one:
echo '</div><div>';
// Get a fresh array with random numbers:
$randomArray = getRandomNumbers();
}
$nextRandomNumber = array_pop($randomArray); // This takes the next number.
echo '<div class="col-md-' . $nextRandomNumber . '">'. $post->content .'</div>';
endforeach;
echo '</div>'; // Close the final row.