@Sayuko

Как «заменить» некоторые значения массива, используя как ключи их же значения?

Есть массив $products с данными товаров:

Array (
    [0] => Array
        (
            [id] => 1
            [main_catalog_id] => 50
            [name] => Название товара 1
		)
	[2] => Array
        (
            [id] => 2
            [main_catalog_id] => 50
            [name] => Название товара 2
		)
	[3] => Array
        (
            [id] => 3
            [main_catalog_id] => 50
            [name] => Название товара 3
		)
	[4] => Array
        (
            [id] => 4
            [main_catalog_id] => 50
            [name] => Название товара 4
		)
	[5] => Array
        (
            [id] => 5
            [main_catalog_id] => 50
            [name] => Название товара 5
		)
)

и т.д.

Также есть список названий которые надо "заменить":

$array = array(
		"Название товара 1" => "Альтернативное название товара 1", 
		"Название товара 2" => "Альтернативное название товара 2", 
		"Название товара 3" => "Альтернативное название товара 3",
	);


Пытаюсь сделать так:

foreach ($array as $key => $value) {
		if(array_search($key, array_column($products, 'name'))) {
			$name_alt = $value;
		}		
	}

	print_r($name_alt)


Но в результате:
Альтернативное название товара 3
Альтернативное название товара 3
Альтернативное название товара 3

А надо, соответственно:
Альтернативное название товара 1
Альтернативное название товара 2
Альтернативное название товара 3

В обходе массива нужно видимо не $value а что-то другое, конкретизирующее что к каждому названию приставить свое альтернативное название. Или я вообще все не правильно делаю?
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
Delgus
@Delgus
Так?
foreach ( $products as &$product ) {
    if ( isset($array[$product['name']])){
        $product['name'] = $array[$product['name']];
     }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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