如何一次从数组中获取多个元素?就像foreach
只有一个,我怎样才能在每次迭代中获得多个?
$data = array(1,2,3,4,5,6);
foreach($data as $a and $b) // pseudocode
{
echo $a + $b;
}
有没有办法做到这一点?
你可以试试
$data = array(1,2,3,4,5,6);
echo "<pre>";
foreach
循环使用array_chunk
foreach ( array_chunk($data, 2) as $v ) {
$v[1] = isset($v[1]) ? $v[1] : 0;
echo $v[0] + $v[1], PHP_EOL;
}
For
环形
for($i = 0; $i < count($data); $i += 2) {
$v = isset($data[$i + 1]) ? $data[$i + 1] : 0;
echo $data[$i] + $v, PHP_EOL;
}
while
环形
$i = 0;
while($v = array_slice($data, $i, 2)){
$v[1] = isset($v[1]) ? $v[1] : 0;
echo $v[0] + $v[1], PHP_EOL;
$i += 2;
}
输出
3
7
11
使用正常for
循环并每次增加索引两次。您可以通过将索引增加所需元素的数量来概括这一点。
// Note that if count($data) is not even, then we'll miss the last element
for($i = 0; ($i + 1) < count($data); $i += 2) {
$first = $data[$i];
$second = $data[$i + 1];
}
据我所知,没有本地方法可以做到这一点 - 您最好的选择是使用 for 循环并调整索引以根据您的要求选择项目。即类似的东西:
for ($i = 1; $i < count($data)-1; $i++) {
for ($j = $i; $j < count($data); $j++) {
echo $data[$i] + $data[$j];
}
}
或者
for ($i = 1; $i < count($data); $i+=2) {
echo $data[$i] + $data[$i+1];
}
注意:第二个选项在数组中存在奇数个元素的问题。