2016-05-05 30 views
0

我想只显示数组的偶数索引,但它不起作用。在数组中显示偶数索引

这里是我的代码:

$color = array("Red", "Pink", "Blue", "Baby Blue", "Green", "Lime", "Gray", "Sunshine"); 

for ($i = 0; $i < count($color); $i++) { 
    if ($color[$i] % 2 === 0) { 
     echo "$i is $color"; 
    } 
} 

我在做什么错?

+2

定义“它不工作”。 –

+0

要计算模数,您需要使用'$ i'的数值而不是'$ color [$ i]'的字符串值。即'if($ i%2 == 0)'。 – showdev

+0

您谈论_array indexes_,然后对_array values_进行实际计算。即'$ i'(数组索引)和'$ color [$ i]'(数组值)。 imo,对数组索引('$ i')进行'偶数'计算。 –

回答

1

你的问题是在4号线主要是和线#5部分:

$color = array("Red", "Pink", "Blue", "Baby Blue", "Green", "Lime", "Gray", "Sunshine"); 

for ($i = 0; $i < count($color); $i++) { 
    if ($i % 2 === 0) { // <- here 
     echo "$i is ".$color[$i]; 
    } 
} 

你的代码基本上是等同于:

if ('Red' % 2 === 0) { // with every single color 

由于您使用的是索引数组,另一种实现你需要的方式是:

foreach ($color as $k=>$v) { 
    if ($k % 2 === 0) { 
     echo "$k is $v"; 
    } 
} 
0

你忘了添加$color的索引$i like:$color[$i]。并错过检查条件。

$color = array("Red", "Pink", "Blue", "Baby Blue", "Green", "Lime", "Gray", "Sunshine"); 

for ($i = 0; $i < count($color); $i++) { 
    if ($i % 2 === 0) { //Here miss check 
     echo "$i is $color[$i]"; //here missing index 
    } 
} 

为简单起见:删除if条件。

for ($i = 0; $i < count($color); $i+=2){ 
    echo "$i is $color[$i]"; //here missing index 
} 
+0

它是非常糟糕的事情,给予downvote有效的答案。 –

+0

我没有downvote(第一部分似乎对我很好),但你添加的第二部分有一些问题。 –

+0

问题?你提到什么问题? –

4

更简单的方法是在for循环中只添加两个而不是一个。

for ($i = 0; $i < count($color); $i+=2) { 
    echo "$i is $color[$i]"; 
} 
+2

这是生活中简单的事情让我高兴:-) – MonkeyZeus