@defect00
Идущий за мечтой.

Как в php значение массива сделать ключом?

Есть массив вида
$arr = [
		'Model'		=>	'OPPO',
		'Price'		=>	'300$',
		'Year'		=>	'2019',
	];


Задача на выходе получить такой массив:
$arr = [
		'OPPO' =>[
		'Price'		=>	'300$',
		'Year'		=>	'2019',
			]
	];


То-есть, значение ключа Model сделать элементом верхнего уровня в вложенном массиве (так звучит задача)

Накидал код
$arr = [
		'Model'		=>	'OPPO',
		'Price'		=>	'300$',
		'Year'		=>	'2019',
	];

$item = [];

	foreach ($arr as $key => $value)
	{
			if ($key == 'Model')
			{
				$item[($value)] = [];
				continue;
			}
		else 
		{
				$item[($key)] = $value;
		}
			var_dump($item);
	}


Но код работает некорректно. Пробовал по-разному писать, как итог, либо получал пустой массив OPPO, либо получал его как массив, но что бы дописать каждое следующее значение - пересоздавался массив. Итог - много массивов, все с разными значениями.

P.S. заранее спасибо, очень буду благодарен за помощь! И заранее приношу извинения за неясности, есть привычка усложнять)
  • Вопрос задан
  • 3160 просмотров
Пригласить эксперта
Ответы на вопрос 3
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
$arr = [
    'Model'		=>	'OPPO',
    'Price'		=>	'300$',
    'Year'		=>	'2019',
];

$key = array_shift($arr);

$new = [$key => $arr];

echo '<pre>' . print_r($new, true) . '</pre>';

/*Array
(
    [OPPO] => Array
        (
            [Price] => 300$
            [Year] => 2019
        )

)*/
Ответ написан
$key = 'Model';
$result = [];
if (key_exist($key, $arr)) {
    $keyVal = $arr[$key];
    $result[$keyVal] = $arr;
    unset($result[$keyVal][$key]);
}
Ответ написан
Комментировать
kavi4
@kavi4
Web developer
юзай нативную функцию array_flip , не пиши велосипед
https://www.php.net/manual/ru/function.array-flip.php
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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