$ bar包含4个(在此示例中,但可能多于4个)我希望以这种方式复制到$ foo和$ blah中的值:
$foo[0] = $bar[0];
$foo[1] = $bar[2];
$blah[0] = $bar[1];
$blah[1] = $bar[3];
因此,$ bar的偶数行将被复制到$ foo [i]中,奇数行将被复制到$ blah [i]。
我尝试过:
for($i=0; $i<2; $i++)
{
for($j=0; $j<4; $j++)
{
if($j % 2 == 0)
{
$foo[$i] = $bar[$j]; // EVEN
}
else
{
$blah[$i] = $bar[$j]; // ODD
}
}
}
但是如果我显示$ foo和$ blah的输出,$ foo [0]等于$ foo [1],$ blah [0]等于$ blah [1],而它们应该包含不同的值。
实施例: 来源:
$bar[0]: 27.8
$bar[1]: Napoli-Posillipo
$bar[2]: 29
$bar[3]: Stadio San Paolo di Napoli, Napoli
(错误的)循环结果:
$foo[0] = 29 (it should be 27.8)
$foo[1] = 29
$blah[0] = Stadio San Paolo di Napoli, Napoli (it should be Napoli-Posillipo)
$blah[1] = Stadio San Paolo di Napoli, Napoli
任何提示? 感谢
答案 0 :(得分:14)
你已经使它变得复杂,像这样的简单应该有效:
foreach ($bar as $k=>$v){
if($k % 2 == 0){
$foo[] = $v; // EVEN
}else{
$blah[] = $v; // ODD
}
}
答案 1 :(得分:3)
怎么样......
foreach($bar as $key => $value) {
if($key % 2 == 0) {
//even
$foo[] = $value;
}
else {
// odd
$blah[] = $value;
}
}
答案 2 :(得分:1)
你自己说:
“因此,$ bar的偶数行将被复制到$ foo [i]中,奇数行将被复制到$ blah [i]”。
循环所有$ bar,并将奇数行复制到$ blah,甚至是$ foo:
for ($i = 0; $i < 4; $i++)
if ($i % 2)
$blah[$i/2] = $bar[$i];
else
$foo[$i/2] = $foo[$i];
在一般情况下:
switch($i % N) // "N" for Napoli :-D
{
case 0: $VAR1[$i/N] = $bar[$i]; break;
case 1: $VAR2[$i/N] = $bar[$i]; break;
...
}