#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']];
}
}
}