@generate
...

PHP как сделать из двумерного массива одномерный?

Как из этого массива сложить ключи и получить один массив, сначало идет первый массив он заканчивается на 2, дальше значение второго массива складывается к нему 3,4.
Из этого
$arr1 = array(
	'1' => array('1' => 'значение-1-ключ-1', '2' => 'значение-2-ключ-1'), 
	'2' => array('1' => 'значение-1-ключ-2', '2' => 'значение-2-ключ-2'), 
	'3' => array('1' => 'значение-1-ключ-3', '2' => 'значение-2-ключ-3'), 
);


Получить такой массив
$arr1 = array(
	'1' => 'значение-1-ключ-1',
	'2' => 'значение-2-ключ-1',
	'3' => 'значение-1-ключ-2',
	'4' => 'значение-2-ключ-2',
	'5' => 'значение-1-ключ-3',
	'6' => 'значение-2-ключ-3',
);
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 4
@akeylimepie
$arr1 = array(
    '1' => array('1' => 'значение-1-ключ-1', '2' => 'значение-2-ключ-1'),
    '2' => array('1' => 'значение-1-ключ-2', '2' => 'значение-2-ключ-2'),
    '3' => array('1' => 'значение-1-ключ-3', '2' => 'значение-2-ключ-3'),
);

$result = [];

array_walk_recursive(
    $arr1,
    function ($value, $key) use (&$result) {
        $index = count($result) ? array_key_last($result) + 1 : $key;

        $result[$index] = $value;
    }
);

var_dump($result);

array(6) {
  [1]=>
  string(29) "значение-1-ключ-1"
  [2]=>
  string(29) "значение-2-ключ-1"
  [3]=>
  string(29) "значение-1-ключ-2"
  [4]=>
  string(29) "значение-2-ключ-2"
  [5]=>
  string(29) "значение-1-ключ-3"
  [6]=>
  string(29) "значение-2-ключ-3"
}
Ответ написан
var_dump(array_merge(...$arr1));
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Элементарный array_reduce
<?php
$arr1 = array(
  '1' => array('1' => 'значение-1-ключ-1', '2' => 'значение-2-ключ-1'), 
  '2' => array('1' => 'значение-1-ключ-2', '2' => 'значение-2-ключ-2'), 
  '3' => array('1' => 'значение-1-ключ-3', '2' => 'значение-2-ключ-3'), 
);

$result = array_reduce(
	$arr1,
	function($res, $el) {
		return array_merge($res, $el);
	},
	[]
);


PHP песочница
Ответ написан
@hesy
Кажется, это самый короткий вариант из представленных :D

$array = array(
  '1' => array('1' => 'значение-1-ключ-1', '2' => 'значение-2-ключ-1'), 
  '2' => array('1' => 'значение-1-ключ-2', '2' => 'значение-2-ключ-2'), 
  '3' => array('1' => 'значение-1-ключ-3', '2' => 'значение-2-ключ-3'), 
);

print_r(call_user_func_array('array_merge', $array));


Array
(
    [0] => значение-1-ключ-1
    [1] => значение-2-ключ-1
    [2] => значение-1-ключ-2
    [3] => значение-2-ключ-2
    [4] => значение-1-ключ-3
    [5] => значение-2-ключ-3
)


https://3v4l.org/Zc2p3
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы