Как объединить несколько массивов вне их циклов?

#php #arrays

#php #массивы

Вопрос:

Я пытаюсь создать массив из 2 других массивов. У меня возникла проблема с их объединением вне их циклов.

Вот код для построения 2 массивов:

 $redDogs = '3';
$blueDogs = '2';

$i = 1;
// build red dogs array
$redDogs = (int)$redDogs;
while($i <= $redDogs) {
    $reds[] = 'red_dog_' . $i  ;
}

    foreach ($reds as $red) {
        print '<pre>'; print_r($red); print '</pre>';
    }

$j = 1;
// build blue dogs array
$blueDogs = (int)$blueDogs;
while($j <= $blueDogs) {
    $blues[] = 'blue_dog_' . $j  ;
}

    foreach ($blues as $blue) {
        print '<pre>'; print_r($blue); print '</pre>';
    }
 

Как я мог бы создать массив, подобный:

 print_r($alldogs);
 

Для получения следующего вывода:

 Array {
    [0] => red_dog_1
    [1] => red_dog_2
    [2] => red_dog_3
    [3] => blue_dog_1
    [4] => blue_dog_2
}
 

Я пробовал array_merge ($ red, $ blue), но, похоже, не получаю никаких значений.

Любая помощь приветствуется.

Комментарии:

1. $merged = $reds $blues;

2. $comb = array_merge($reds, $blues); var_dump($comb);

3. array_merge возвращает новый объединенный массив. Так что, если вы просто звоните array_merge($red, $blue) сами по себе, это ничего не даст. И в зависимости от того, что вы хотите сделать, union ( ) также может работать. Разница в том, что объединение не будет перезаписывать существующие ключи, а слияние будет. Также слияние добавит цифровые клавиши с повторной индексацией, в то время как объединение пропустит те места, где они совпадают.

4. карго-культовое программирование: $blueDogs = '2'; $blueDogs = (int)$blueDogs . Если вам нужны были целые числа, почему вы просто не ОПРЕДЕЛИЛИ их как целые числа в первую очередь? $blueDogs = 2

5. Неужели? sandbox.onlinephpfunctions.com/code /…

Ответ №1:

 $redDogs = '3';
$blueDogs = '2';

$i = 1;
// build red dogs array
$redDogs = (int)$redDogs;
while($i <= $redDogs) {
    $reds[] = 'red_dog_' . $i  ;
}

$j = 1;
// build blue dogs array
$blueDogs = (int)$blueDogs;
while($j <= $blueDogs) {
    $blues[] = 'blue_dog_' . $j  ;
}

print_r(array_merge($reds, $blues));
 

Объедините свой массив перед циклическим переходом по массиву.

Ваши операторы foreach преобразовывали ваш массив в строки.

Комментарии:

1. Всегда лучше включить объяснения, почему ваш пример кода отвечает на вопрос, чем просто опубликовать некоторый код.