Heaven's Feels Ответов: 2

Нужна помощь по циклу в PHP


У меня есть петля for как ниже:
$a = array('a', 'b', 'c', 'd', 'e', 'g');
$b = array('1', '2');
$count_a = count($a); //count $a
$count_b = count($b); //count $b

$u = 0;
for($i = 0; $i < $count_a; $i++){
    $result[] = $a[$i].'-'.$b[$u];
    $u++;
    if($u == $count_b){
        print_r($result);
        $u = 0;
    }
}

И результат за это:
Array
(
    [0] => a-1
    [1] => b-2
)
Array
(
    [0] => a-1
    [1] => b-2
    [2] => c-1
    [3] => d-2
)
Array
(
    [0] => a-1
    [1] => b-2
    [2] => c-1
    [3] => d-2
    [4] => e-1
    [5] => g-2
)

Я хочу, чтобы результат был:
Array
(
    [0] => a-1
    [1] => b-2
)
Array
(
    [2] => c-1
    [3] => d-2
)
Array
(
    [4] => e-1
    [5] => g-2
)

Что я должен делать? пожалуйста, помогите мне!

Что я уже пробовал:

Я пытаюсь найти google за 1 день, но это не удается

2 Ответов

Рейтинг:
19

Jochen Arndt

Вы должны очистить result массив тоже после его распечатки:

for($i = 0; $i < $count_a; $i++){
    $result[] = $a[$i].'-'.$b[$u];
    $u++;
    if($u == $count_b){
        print_r($result);
        $u = 0;
        unset($result);
    }
}


Рейтинг:
0

Mohibur Rashid

Другое решение

<?php
$a = array('a', 'b', 'c', 'd', 'e', 'g');
$b = array('1', '2');
$count_a = count($a); //count $a
$count_b = count($b); //count $b
 
for($i=0;$i<$count_a;) {
  for($j=0;$j<$count_b;$j++, $i++) {
    $result[$i] = $a[$i]."-".$b[$j];
  }
  print_r($result);
  unset($result);
}


Но если вы хотите, чтобы они все были в одном массиве

<?php
$a = array('a', 'b', 'c', 'd', 'e', 'g');
$b = array('1', '2');
$count_a = count($a); //count $a
$count_b = count($b); //count $b
 
for($i=0;$i<$count_a;) {
  for($j=0;$j<$count_b;$j++, $i++) {
    $result[$i] = $a[$i]."-".$b[$j];
  }
}
  print_r($result);