AronTito
@AronTito
разработчик-любитель web приложений и сайтов.

Как записать имена массивов в функцию array_merge?

Всем привет.
Один РНР код генерирует массивы в цикле и на выходе получаются вот такие массивы.
Все ок.
$arr_1 = [ ... ];
$arr_2 = [ ... ];
$arr_3 = [ ... ];

Так нужно, для другого кода, где идет рандомные выбор массива...
Задача такая: - нужно все массивы записать в один. Есть у РНР функция array_merge()
$myArray = array_merge($arr_1,$arr_2,$arr_3); // вот та она работает

я написал цикл которые генерирует имена этих массивов
/*
	точное количество массивов которые будут созданы я знаю
*/
function createNewNameArray () {
	//
	for ($i=1; $i <= 3 ; $i++) {
		# code...
		$var = 'arr_'.$i;
		return $$var;
	}
}
// И вот тут проблема, РНР говорит, что нет таких имен переменных
$myArray = array_merge(createNewNameArray()); // ошибка

Как записать имена массивов в функцию array_merge ?
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
@Firsov36
full-stack web developer
Как только вы вызываете return в функции, вы вылетаете из нее, поэтому ничего не получается. И обратиться к произвольному названию переменной, то надо обрамлять в фигурные скобки. Ответ на ваш вопрос будет примерно таким:

function createArrays($count = 3)
{
    $result = [];
    for ($i = 1; $i <= 3; $i++) {
        ${'arr_' . $i} = [rand(10, 20)];
        $result[] = ${'arr_' . $i};
    }
    return $result;
}

$result = [];
foreach (createArrays() as $arr) {
    $result = array_merge($result, $arr);
}

echo '<pre>';
var_dump($result);
echo '</pre>';


Ну и не правильно Вы использовали функцию array_merge
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы