Я пытаюсь объединить массив, но не получил того, что ожидал.
Мне это нравилось, но не получилось то, что я хочу.
$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');
Примечание: это не сортировка заказа. Я хочу отсортировать альтернативно.
вам не нужны «2» и «4» второго массива? Почему вы не можете использовать array_merge и asort()?
Фактический вопрос: хотите ли вы, чтобы результат был отсортирован или просто добавлял элемент каждый раз из каждого массива? если вы хотите отсортировать, то array_merge и sort как предложено - иначе смотрите мой пост
Примечание: это не сортировка заказа. Я хочу отсортировать альтернативно.






Используйте 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');
Ссылка: массив-фильтр, сдвиг массива
Живой пример: 3х4л
Если вы хотите, чтобы они были отсортированы, просто выполните:
print_r(sort(array_merge($a,$b)));
print_r(array_values(array_filter($res))); // contains: array('1','2','3','5','6','7','9');Ваш ответ самый простой и лучший, чем мой ответ. Большое спасибо.
$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);
Что нового в этом ответе, которого нет в посте @Drakula Predator?
Сейчас почти ничего, но его пост отредактирован позже, чтобы добавить функцию сортировки.
Я получил решение, что я хотел сделать.
$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
После слияния данные должны быть отсортированы?