Поиск и замена многомерного массива с помощью языкового файла

#php #arrays #codeigniter

#php #массивы #codeigniter

Вопрос:

у меня есть языковой файл, который выглядит следующим образом

 $lang['dashboard ']='Dashboard';
$lang['financial_dashboard']='Financial Dashboard';
$lang['project_dashboard']='Project Dashboard';
  

Результат массива из базы данных

 Array ( [0] => Array ( [id] => 109 [text] => dashboard [items] => Array ( [0] => Array ( [id] => 1 [text] => financial_dashboard [items] => 109 ) [1] => Array ( [id] => 108 [text] => project_dashboard [items] => 109 ) ) )
  

Как я могу найти и заменить значения в массиве значениями в моем языковом файле, но сохранить массив таким, какой он есть, чтобы мой конечный результат выглядел примерно так

 Array ( [0] => Array ( [id] => 109 [text] => Dashboard [items] => Array ( [0] => Array ( [id] => 1 [text] => Financial Dashboard [items] => 109 ) [1] => Array ( [id] => 108 [text] => Project Dashboard [items] => 109 ) ) )
  

Любые предложения

Ответ №1:

Вы можете просто перебрать массив и проверить, доступны ли тексты замены, используя in_array() . Если найдено, замените его соответствующим значением $lang.

 $replace = array_keys($lang); // Text to replace i.e dashboard, financial_dashboard, project_dashboard

foreach ($data as amp;$dt) {
  if (is_array($dt['items'])) {
    foreach ($dt['items'] as amp;$d) {
        if (in_array($d['text'], $replace)) {
            $d['text'] = $lang[$d['text']];
        }
    }
  } else {
      if (in_array($dt['text'], $replace)) {
        $dt['text'] = $lang[$dt['text']];
      }
  }
}