2017-01-22 6 views
0

Я пытаюсь напечатать каждый 2-й элемент или массив, начиная с 1, так что первый, третий, пятый элемент и т.д. Мой текущий код дают незаконное смещение ошибка типаДля каждого нечетного элемента массива PHP

$array2 = array(explode(',', $prodorder)); 

<?php foreach($array2 as $value) { 
    if ($value % 205 !== 0) { 

     $productscore = $_POST[$value]; 
     echo $value; 
?> 

    <tr><td><?php echo $productname;?></td><td><?php echo $productdescription;?></td></tr> 

    <?php }} ?> 

ответ

2

использования вместо этого используется цикл for.

for($i=0; $i<count($items); $i+=2) 
    echo $items[$i] . '<br>'; 
+0

Я изменил к выше, но это не вторя из ничего. Мои значения массива равны 1,2,4,9, и я ожидаю, что 1 и 4 будут эхом –

+0

Просто нужно изменить на array_unique –

+0

Что значит изменить на array_unique? –

0

Это также будет работать, но с использованием for петли лучше и более удобный способ.

$array2 = [ 
    "value1", 
    "value2", 
    "value3", 
    "value4", 
    "value5" 
]; 
//$array2 = array_values($array2); 

foreach($array2 as $k => $v) { 
    if (($k + 1) % 2 == 1) { 
     echo $v; 
    } 
} 

Кроме того, это не может быть использован в ассоциативном массиве, если вы не используете array_values.

0

Попробуйте это:

foreach($array2 as $k=>$value) { 
    if ($k % 2 !== 0) { 
     $productscore = $_POST[$value]; 
     echo $value; 
    } 
} 
Смежные вопросы