目标是"换行";
有两个数组:
$split = [4, 2, 4];
$courses = ['HTML', 'JS', 'CSS', 'VueJS', 'ReactJs', 'PHP', 'Ruby', 'Python', 'Java', 'C#'];
您可以看到,我有第一个array
称为split,第二个array
称为courses,我想在每个分割后添加<br>
我想循环$courses
,并在4项之后打印<br>
。同样在2项之后,我打印另一个<br>
$split
数组,这就是为什么我不想使用
foreach($courses as $key => $value){
echo $value;
if ($key == 4 OR $key == 2){
echo '<br>';
}
}
我的代码不能正常工作,因为我不能使用很多OR
与if statements
,因为我可以在我的$split
array
有很多分割
是否有任何干净和最好的方法来循环$courses
并在4
循环之后打印<br>
,在2
之后,在4
之后等等,这取决于我在$split
中有多少分割
这将完成工作,记住数组从0开始,而不是1。所以它会在第3和第5项而不是第2和第4项上断裂。
关于in_array()的更多信息
<?php
$split = [4, 2, 4];
$courses = ['HTML', 'JS', 'CSS', 'VueJS', 'ReactJs', 'PHP', 'Ruby', 'Python', 'Java', 'C#'];
foreach($courses as $key => $value){
echo $value;
if (in_array($key, $split)) {
echo '<br>';
}
}
?>
您需要跟踪下一个项目的顺序后找到它。
<?php
$split = [4, 2, 3];
$courses = ['HTML', 'JS', 'CSS', 'VueJS', 'ReactJs', 'PHP', 'Ruby', 'Python', 'Java', 'C#'];
$split_position = $reIndexValue = 0;
$elements = [];
foreach($courses as $index => $name) {
$reIndexValue++;
if(is_int($split_position) && $reIndexValue == $split[$split_position]) {
$name = $name.'<br>';
$split_position = isset($split[$split_position + 1])? ++ $split_position : false;
$reIndexValue = 0;
}
$elements[] = $name;
}
echo implode (' ',$elements);
以下代码将在4次迭代后首先回显一个换行符,然后在2次迭代后回显一个换行符,然后在4次迭代后再回显另一个换行符。(对于$split数组中的任何指定序列,代码将继续执行)
<?php
$split = [4, 2, 4];
$courses = ['HTML', 'JS', 'CSS', 'VueJS', 'ReactJs', 'PHP', 'Ruby', 'Python', 'Java', 'C#', 'Pascal', "Fortran"];
$count = 0; //Counting the times we looped using a seperate variable
foreach($courses as $key => $value){
echo $value." ";
$count += 1; //Increase count
if ($split[0]==$count) { //If the $count is similar to the first variable in $split array,
echo '<br>';
$count=0; //Reset $count back to 0
array_shift($split); //Remove the already performed first variable from array
}
//without the following block, code will give you an "Undefined offset" notice
if (count($split)==0){
array_push($split, -1);//Add a dummy variable (-1) that will never be tested.
}
}
?>
我添加了另外两个变量"Pascal"one_answers";Fortran"到$courses数组中,以测试
的行为