2016-01-08 20 views
5

Jak możemy pokazać dwa elementy dla każdej pętli w każdej iteracji?Pokaż dwa elementy w pętli foreach w każdej iteracji?

Na przykład mam tablicę takich jak to:

$arr = array('a', 'b', 'c', 'd','e','f'); 

i chcesz pokazać rekordy tak:

a-b 
    c-d 
    e-f 

jakieś pomysły?

+2

[http://stackoverflow.com/questions/6852550/php-foreach-as-key-every-two-number -as-a-group] (http://stackoverflow.com/questions/6852550/php-foreach-as-key-every-two-number-as-a-group) –

Odpowiedz

3

Przeprowadź pętlę nad tablicą przy pomocy for.

Wydrukuj bieżący i bieżący plus jedną wartość w każdej iteracji według licznika.

Zwiększ licznik.

<?php 
$arr = array('a', 'b', 'c', 'd','e','f'); 
$i=0; 
$len = count($arr); 
for ($i=0; $i< $len; $i++) { // We could have used count($arr) 
//instead of $len. But, it will lead to 
//multiple calls to count() function causing code run slowly. 
    echo "<br/>".$arr[$i] . '-' . $arr[$i+1]; 
    ++$i; 
} 
?> 
+1

Hmm, z tym rozwiązaniem będziesz mieć a 'Niezdefiniowane przesunięcie: ' jeśli '$ len% 2 = 1' – dickwan

0
<?php 
$input_array = array('a', 'b', 'c', 'd', 'e'); 
print_r(array_chunk($input_array, 2)); 
?> 

Powyższy przykład wyświetli:

Array 
(
    [0] => Array 
     (
      [0] => a 
      [1] => b 
     ) 

    [1] => Array 
     (
      [0] => c 
      [1] => d 
     ) 

    [2] => Array 
     (
      [0] => e 
     ) 

) 
9

Można użyć array_chunk rozumie się dokładnie na tego rodzaju przypadkach i to najkrótsza i najbardziej skuteczny sposób, aby to zrobić.

$arr = array('a', 'b', 'c', 'd','e','f'); 
foreach(array_chunk($arr , 2) as $val) { 
    echo implode('-', $val)."\n"; 
} 

kawałki tablicę do matryc z elementami formatu.

Więcej szczegółów: http://php.net/manual/en/function.array-chunk.php

+3

Doskonała odpowiedź +1 – Pupil

0

Spróbuj tego:

<?php 
    $array = array('a', 'b', 'c', 'd','e','f'); 
    $length = count($array); 
    for ($i=0; $i< $length; $i+2) { 
     echo "<br/>".$arr[$i] . '-' . $arr[$i+1]; 
    } 
?> 
Powiązane problemy