@River0051

Как заменить значение в массиве?

Здравствуйте, есть массив
Array (
[0] => green 
[1] => purple 
[2] => white 
[3] => black
[4] => grey
 )

Значения массива могут быть любыми и в любом количестве
я вывожу массив через запятую
echo implode(", ", $arr);
Получаю - green, purple, white, black, grey
Но нужно сделать так, чтобы я мог заменить значения до вывода,т.е я получаю из базы массив, заменяю значения и вывожу, например
if ($value=='green'){echo 'Зеленый сад';}
if ($value=='black'){echo 'Вечер';}
или
if ($value=='green'){$value=='Зеленый сад';}
if ($value=='black'){$value=='Вечер';}

И при выводе
echo implode(", ", $arr);
Получилось так - зеленый сад, purple, white, Вечер, grey

Вроде звучит просто, но никак не пойму как это делать на лету, т.е на странице несколько массивов таких в которых нужно английские слова заменить на русские
  • Вопрос задан
  • 5809 просмотров
Решения вопроса 2
Delgus
@Delgus
А потом мы имеем сто тысяч if-ов в коде, замечательно все подсказали.
//слова
$array = ['green', 'purple', 'white', 'black', 'grey'];
//массив с переводами чтобы сто раз if не писать как дундук
$translate = [
    'green' => 'зеленый',
    'white' => 'белый'
    ];
    
//1 вариант (для php > 7.0 короткий синтаксис)
foreach ($array as $k => $v) {
   $array[$k] = $translate[$v] ?? $v;
}
//2 вариант (для php > 5.4 короткий синтаксис)
foreach ($array as $k => $v) {
   $array[$k] = isset($translate[$v]) ?$translate[$v] : $v;
}
//3 вариант(длинная запись через if php > 5.4)
foreach ($array as $k => $v) {
   if(isset($translate[$v])){
      $array[$k] = $translate[$v];
   }
}
Ответ написан
Можно сделать так:

$array = ['green', 'purple', 'white', 'black', 'grey'];

foreach ($array as $value => $key) {
  if ($key == 'green') $array[$value] = 'Значение';
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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