Создание нового массива из существующих массивов в Stack Overflow

Я пытаюсь создать новый массив, содержащий значения из уже существующих массивов.

<?php

$array1 = array(
0 => 101,
1 => 102,
2 => 121,
3 => 231,
4 => 232,
5 => 233
);

$array2 = array(
0 => 58,
1 => 98,
2 => 45,
3 => 48,
4 => 45,
5 => 85
);

$result = array();

Обратите внимание, что первый элемент из $array1, второй элемент из $array2 и так далее.

Любой указатель высоко ценится.

1

Решение

Пример того, как вы можете достичь этого:

    $array = array(4,5,6);
$array2 = array(8,9,0,12,44,);
$count1 = count($array);
$count2 = count($array2);
$count = ($count1 > $count2) ? $count1 : $count2;
$rez = array();
for ($i = 0; $i < $count; $i++) {
if ($i < $count1) {
$rez[] = $array[$i];
}
if ($i < $count2) {
$rez[] = $array2[$i];
}}

var_dump($rez);

Результатом будет массив

array(8) {
[0]=>
int(4)
[1]=>
int(8)
[2]=>
int(5)
[3]=>
int(9)
[4]=>
int(6)
[5]=>
int(0)
[6]=>
int(12)
[7]=>
int(44)
}

но если вам нужно сохранить пустые значения, вы можете удалить
это проверяет if ($i < $count2)

1

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

Вы можете попробовать с for или же foreach петли (в случае $array1 а также $array2 иметь одинаковое количество элементов с одинаковыми индексами):

$result = array();

for($i = 0; $i < count($array1); $i++){
$result[] = $array1[$i];
$result[] = $array2[$i];
}

[] дает вам возможность не указывать индекс, так что вы можете просто вставить их по одному из каждого массива в массив результатов.

Пример с циклом for

Пример с циклом foreach

Существует также более простой способ сделать это, не беспокоясь о потерянных индексах и элементах:

$i = 0;

foreach($array1 as $v){
$result[$i] = $v;
$i = $i+2;
}

$i = 1;

foreach($array2 as $v){
$result[$i] = $v;
$i = $i+2;
}

ksort($result);

пример

Это выглядит немного громоздко, поэтому вы можете написать функцию, чтобы сделать ее более элегантной:

function build_array(&$array, $input, $counter){
foreach($input as $v){
$array[$counter] = $v;
$counter = $counter+2;
}
}

build_array($result, $array1, 0);
build_array($result, $array2, 1);
ksort($result);

пример

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector