Php 如何对阵列中的第2、第3和第5个元素进行操作?

Php 如何对阵列中的第2、第3和第5个元素进行操作?,php,arrays,loops,Php,Arrays,Loops,我有一个非常简单的索引数组: Array ( [0] => 1 [1] => Buster Posey [2] => SF [3] => C [4] => 16.60 [5] => 5 [6] => 28 [7] => 2 [8] => Joe Mauer [9] => Min [10] => C [11] => 57.60

我有一个非常简单的索引数组:

Array
(
    [0] => 1
    [1] => Buster Posey
    [2] => SF
    [3] => C
    [4] => 16.60
    [5] => 5
    [6] => 28
    [7] => 2
    [8] => Joe Mauer
    [9] => Min
    [10] => C
    [11] => 57.60
    [12] => 35
    [13] => 80
    ...
我需要将每2、3和5个键值添加到
$str

我可以处理
$str
上的操作,但我无法将我的小脑袋缠绕在我需要的循环/计数器上,所以只要朝正确的方向轻推一下就好了

为清楚起见,给定上述数组,my
$str
的结果如下所示:

Buster Posey, SF, 16.60
Joe Mauer, Min, 57.60
这是数组的第二、第三和第五个元素,其中添加了两个逗号和一个换行符,以便在数组中进行良好的测量,并在整个数组中重复

编辑:


我的问题有个错误。下面的评论是正确的。他们七人一组,所以我需要每第二、第三和第五个元素,然后跳过第二个,重新开始这个过程。我将按照建议使用。谢谢所有的答案。

您需要使用模运算符(
%
)。它返回一个数字除法的剩余部分,并经常用于检查一个数字是否是另一个数字的倍数

所以,要检查一个数是否为偶数(正好可以被2整除),您需要

$odd = $number%2;
要使其成为一个完整的答案,请在循环中使用此条件(如果没有条件,则不知道如何操作):

类似这样的($i=0;$i的代码

$i = 0;

foreach($array as $value) {
    if ($i++ % 2 == 0 || $i++ % 3 == 0 || $i++ % 5 == 0) {
        echo $value;
    }
}

两种不同的方法:循环所有条目并使用mod,或循环每个不同的条件

一体式循环:

foreach ($array as $k => $v){
    if ($k % 2 == 0 || $k % 3 == 0 || $k % 5 == 0){
        .. do something with $v
    }
}
不同的循环:

for ($i=0; $i<count($array); $i+=2) .. do something with $array[$i]
for ($i=0; $i<count($array); $i+=3) .. do something with $array[$i]
for ($i=0; $i<count($array); $i+=5) .. do something with $array[$i]

对于($i=0;$i您需要按照步骤2-1-2、2-1-2进行排序。您可以使用双循环、循环+大小写…

我对PHP不太了解,但如果我理解正确,您需要按照一个顺序连接索引2、3、5甚至更多:

n[0] = 2
n[1] = 3
n[2] = 5
...
n[i] = n[i-1] + n[i-2]
所以,您可能需要创建一个需要连接的索引数组,提供前两个值(在我看来像是斐波那契级数):

n[0]=2;
n[1]=3;

对于(i=2,我想你甚至需要一个循环吗?如果你需要一个循环,那么你正在考虑某种级数……你正在考虑的级数是:
2,3,5,…,n[i]=n[i-1]+n[i-2]
?我不确定。没有循环,你将如何实现它?为什么不使用来正确地分组相关值(看起来每个7块都是一个组)然后你可以访问每个数组的偏移量1、2和4。非常好,nickb。我来试一试。@Jeff-你可以看到它在工作,它会产生精确的输出。是的,它很完美。谢谢!
n[0] = 2
n[1] = 3
n[2] = 5
...
n[i] = n[i-1] + n[i-2]
n[0] = 2;
n[1] = 3;
for(i=2, i<m, i++) {
    n[i] = n[i-1] + n[i-2];
}
for(i=0; i<m; i++) {
    str = concatenate(str, arr[n[i]]);
}
foreach( array_chunk( $array, 7) as $row) {
    echo $row[1] . ' , ' . $row[2] . ' , ' . $row[4] . "\n";
}