Задать вопрос
@centropull

Как записать ключи массива в строку?

Здравствуйте, прошу помочь написать код.


Имеем массив:
$arr = ['Массив' =>
	[
		'purchases' => 'Покупки',
		'food' 	=> 'Еда',
		'vegetables' => 'Овощи',
		'carrot' 	=> 'Морковка',
	]
];

print_r($arr)
[Массив] => Array
        (
            [purchases] => Покупки
            [food] => Еда
            [vegetables] => Овощи
            [carrot] => Морковка
        )


Пример - как должно в результате получиться.
Хочется чтоб новый массив имел следующий вид:
$arr = ['Массив' => 
	[
		'purchases' =>
			[
				'name' => 'Покупки',
				'uri' => 'purchases'
			],
		'food' 	=>
			[
				'name' => 'Еда',
				'uri' => 'purchases/food'
			],
		'vegetables' =>
			[
				'name' => 'Овощи',
				'uri' => 'purchases/food/vegetables'
			],
		'carrot' 	=>
			[
				'name' => 'Морковка',
				'uri' => 'purchases/food/vegetables/carrot'
			]
	]
];

print_r($new_arr)
[Массив] => Array
        (
            [purchases] => Array
                (
                    [name] => Покупки
                    [uri] => purchases
                )

            [food] => Array
                (
                    [name] => Еда
                    [uri] => purchases/food
                )

            [vegetables] => Array
                (
                    [name] => Овощи
                    [uri] => purchases/food/vegetables
                )

            [carrot] => Array
                (
                    [name] => Морковка
                    [uri] => purchases/food/vegetables/carrot
                )

        )


Предполагаю, что нужно воспользоваться foreach или for (Если Вы решились помочь, пожалуйста, НЕ пишите новую функцию).

  • Вопрос задан
  • 318 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@LazyDev
Если примитивно и не вникать в детали:

<?php

$arr = ['Массив' =>
  [
    'purchases' => 'Покупки',
    'food' 	=> 'Еда',
    'vegetables' => 'Овощи',
    'carrot' 	=> 'Морковка',
  ]
];


$newArr = [];
$prevUri = "";
foreach ( $arr['Массив'] as $key => $name ) {
	$uri = $prevUri ? "{$prevUri}/{$key}" : $key;
	$newArr['Массив'][$key] = [
		'name' => $name,
		'uri' => $uri,
	];
	$prevUri = $uri;
}

print_r($newArr);


Результат:
Array
(
    [Массив] => Array
        (
            [purchases] => Array
                (
                    [name] => Покупки
                    [uri] => purchases
                )

            [food] => Array
                (
                    [name] => Еда
                    [uri] => purchases/food
                )

            [vegetables] => Array
                (
                    [name] => Овощи
                    [uri] => purchases/food/vegetables
                )

            [carrot] => Array
                (
                    [name] => Морковка
                    [uri] => purchases/food/vegetables/carrot
                )

        )

)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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