Фильтр массива и слияние в php - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь объединить массив, но не получил того, что ожидал.

Мне это нравилось, но я не добился успеха.

$a = array('1', '3', '5', '7', '9');
$b = array('2', '4', '6');
$count_b = sizeof($b); 
$i = 0;
while ($i < $count_b){
  $a_b[] = $a[$i];
  $a_b[] = $b[$i];
 $i++;
}
// the result will be
$a_b = array('1','2','3','4','5','6');

Моя проблема в том, что у меня нет идеи объединить отсутствующий массив '7' и '9' .

Пример:

$a = array('1', '3', '5', '7', '9');
$b = array('2', '4', '6');

Ожидаемый результат

 $c = array('1','2','3','4','5','6','7','9');

Примечание: заказ не сортируется. Я хочу отсортировать поочередно.

Ответы [ 3 ]

1 голос
/ 06 июня 2019

Используйте array_shift, а затем каждый раз берите первый элемент. В конце отфильтруйте пустые пятна с помощью array_filter:

while ($a || $b) {
    $res[] = array_shift($a);
    $res[] = array_shift($b);
}
print_r(array_filter($res)); // contains: array('1','2','3','5','6','7','9');

Ссылка: фильтр массива , сдвиг массива

Живой пример: 3v4l

Если вы хотите их отсортировать, просто сделайте:

print_r(sort(array_merge($a,$b)));    
0 голосов
/ 07 июня 2019

Я получил решение, что я хотел сделать.

$a = array('1', '3', '5', '7', '9');
$b = array('2', '4', '6');
$count_b = sizeof($b); 
$i = 0;
while ($i < $count_b){
  $a_b[] = $a[$i];
  $a_b[] = $b[$i];
 $i++;
}
// the result will be
$a_b = array('1','2','3','4','5','6');
$ab = array_unique(array_merge( $a_b,$a ));
$ab= array_values($ab);

// this is my excepted result
array (size=8)
  0 => int 1
  1 => int 2
  2 => int 3
  3 => int 4
  4 => int 5
  5 => int 6
  6 => int 7
  7 => int 9
0 голосов
/ 06 июня 2019
$a = array('1', '3', '5', '7', '9');
$b = array('2', '4', '6');
$c = array_merge($a, $b);

//If you want to sort array add this line too
//If you want to preserve keys, check asort() function
sort($c);

print_r($c);
...