Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何让foreach包含动态元素_Php_Oop_For Loop_Foreach - Fatal编程技术网

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];
  }
}