kolyash
@kolyash
Сам себе на уме :)

Замена ключа элемента php массива на значение другого элемента?

Всем привет!
Подскажите, как решить такую задачу, а то уже всю голову сломал.
Есть ассоциативный массив:
array(2) {
  ["avto"]=>
  array(2) {
    [0]=>
    array(2) {
      ["marka"]=>
      string(4) "Opel"
      ["model"]=>
      string(5) "Kadet"
    }
    [1]=>
    array(2) {
      ["marka"]=>
      string(3) "BMW"
      ["model"]=>
      string(3) "520"
    }
  }
  ["kontakt"]=>
  array(2) {
    [0]=>
    array(2) {
      ["tel"]=>
      string(17) "+7(908) 457-40-22"
      ["mail"]=>
      string(13) "art45@mail.ru"
    }
    [1]=>
    array(2) {
      ["tel"]=>
      string(17) "+7(908) 455-10-02"
      ["mail"]=>
      string(18) "student15@gmail.ru"
    }
  }
}


нужно чтобы ключи элементов массива ["avto"] т. е (0, 1 ... и бесконечное множество) заменить на значение из массива ["kontakt"], а точнее на емайл с ключом ["mail", так же по порядку... т. е в массиве ["avto"] ключ 0 заменится на art45@mail.ru, ключ 1 на student15@gmail.ru и т. д по порядку... как это реализовать, может через перебор как-то или функцией???
  • Вопрос задан
  • 1160 просмотров
Решения вопроса 1
@bears
$array = [
	'avto' => [
		[
			'marka' => 'Opel',
			'model' => 'Kaded',
		],
		[
			'marka' => 'BMW',
			'model' => '520',
		]
	],
	'kontakt' => [
		[
			'tel' => '+7(908) 457-40-22',
			'mail' => 'art45@mail.ru',
		],
		[
			'tel' => '+7(908) 455-10-02',
			'mail' => 'student15@gmail.ru',
		]
	]
];

$array['avto'] = array_combine(array_column($array['kontakt'], 'mail'), $array['avto']);

print_r($array);

рабочий пример
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
TerNik
@TerNik
$newArr = array();
foreach ($avtoArr as $i => $carArr) {
	newArr[$kontaktArr[$i]["mail"]] = $carArr;
}
$avtoArr = $newArr;
Ответ написан
Ваш ответ на вопрос

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

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