Php 如何让foreach包含动态元素
这是我的讲稿,我怎样才能每次都分配不同的课呢 以下是我到目前为止所做的尝试Php 如何让foreach包含动态元素,php,oop,for-loop,foreach,Php,Oop,For Loop,Foreach,这是我的讲稿,我怎样才能每次都分配不同的课呢 以下是我到目前为止所做的尝试 <?php $class1="one"; $class2="two"; $class3="three"; $class4="four"; foreach ($blogs as $blog) { echo $blog->val; echo $class; } ?> 在这里,foreach的行为是规则的,因为它可能包含任意数量的记录 但是我需要将$class连续分配为1、2、3、4(在fo
<?php
$class1="one";
$class2="two";
$class3="three";
$class4="four";
foreach ($blogs as $blog)
{
echo $blog->val;
echo $class;
}
?>
在这里,foreach的行为是规则的,因为它可能包含任意数量的记录
但是我需要将$class连续分配为1、2、3、4(在foreach上面定义)
我该怎么做 首先将$class定义为数组
$class = array(
"one",
"two",
"three",
"four",
);
迭代您的blogs数组并检索密钥
foreach ($blogs as $key => $blog) {
....
}
然后对循环中的$key
值使用模运算符%
,依次识别$class
中的每个条目
foreach ($blogs as $key => $blog) {
echo $blog->val;
echo $class[($key % 4)];
}
使用模数除以
4
,因为$class
数组中有4个条目为了完整起见,还有两种方法;两者都使用包含所有可能值的$classes
。首先是@MarkBaker答案的一个细微变化:
$classes = array('one', 'two'/*, ...*/);
$length = count($class);
$i = 0;
foreach($blogs as $blog) {
echo $blog->val;
echo $classes[$i];
if (++$i === $length) {
$i = 0;
}
}
Second使$classes
检查尽可能直接-通过:
在这种情况下,不必检查溢出/模块化,因为每个块包含的元素不超过
count($classes)
。这种方法的一个(轻微)变化是使用一个单独的变量作为索引。在每个步骤中,该变量1)根据$class
的大小进行检查;2) 如果相等,则降为零;3) 已处理(通过$class[$i]
);4) 递增。@raina77ow您可以将其作为单独的答案发布吗。
foreach (array_chunk($blogs, count($classes)) as $blogs_chunk) {
foreach($blogs_chunks as $key => $blog) {
echo $blog->val;
echo $classes[$key];
}
}