@gofree

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

Array
(
    [0] => 80
    [1] => 80
    [2] => 90
)
Array
(
    [0] => Array
        (
            [0] => 190
            [1] => 195
        )

    [1] => Array
        (
            [0] => 200
        )

    [2] => Array
        (
            [0] => 190
            [1] => 195
        )

)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

Здравствуйте, подскажите пожалуйста как объединить эти три массива, что бы получился массив вида
Array
(
    [80] => Array
                (
                    [190] => 1
                    [195] => 1
                    [200] => 2
                )
    [90] => Array
                (
                    [190] => 3
                    [195] => 3
                )
)
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@kacheleff
fullstack developer
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
gromdron
@gromdron
Работаю с Bitrix24
Как вариант, еще один:

/**
 * Prepare array for our job
 */
$arrayOne = [
	0 => 80,
	1 => 80,
	2 => 90,
];

$arrayTwo = [
	0 => [
		0 => 190,
		1 => 195,
	],
	1 => [
		0 => 200,
	],
	2 => [
		0 => 190,
		1 => 195,
	],
];

$arrayThree = [
	0 => 1,
	1 => 2,
	2 => 3,
];

/**
 * @var array Array with actual data in our structure
 */
$arResult = [];

foreach ( $arrayTwo as $iKeyOne => $arrayTwoElement )
{
	// if in second array exist unknown key
	if ( !array_key_exists($iKeyOne, $arrayOne) )
	{
		continue;
	}

	// if in third array exist unknown key
	if ( !array_key_exists($iKeyOne, $arrayThree) )
	{
		continue;
	}

	// if in second array no elements
	if ( empty($arrayTwoElement) || !is_array($arrayTwoElement) )
	{
		continue;
	}

	/* @var integer Key for first depth level  */
	$iLevelKey = (int) $arrayOne[ $iKeyOne ];

	/* @var integer Value for second depth level */
	$iLevelValue = (int) $arrayThree[ $iKeyOne ];

	foreach ($arrayTwoElement as $k => $v)
	{
		$arResult[ $iLevelKey ][ $v ] = $iLevelValue;
	}
}

var_dump($arResult);
/*
Will display:
array(2) {
  [80]=>
  array(3) {
    [190]=> int(1)
    [195]=> int(1)
    [200]=> int(2)
  }
  [90]=>
  array(2) {
    [190]=> int(3)
    [195]=> int(3)
  }
}
*/
Ответ написан
Комментировать
KonataDev
@KonataDev
backend php web developer yii2 laravel
array_merge, array_merge_recursive
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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