Как соединить несколько массивов в один на PHP

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Лeйлa
Сообщения: 38

Как соединить несколько массивов в один на PHP

Сообщение Лeйлa » Пн июн 15, 2015 4:00 pm

Доброго дня!
На одном сайте несколько языков, на выбор пользователя. Перевод храню в файлах php, в папках ru, en, kz и т. д. Для наглядности покажу пример одного языкового файла:

Код: Выделить всё

$lang = array( 
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',    
); 

Остальные языковые файлы тоже содержат массив с той же переменной $lang. Но переменные будут использоваться только из последнего массива, а все предыдущие не будут браться во внимание, т. к. переменная $lang пересохранена на более поздний массив. Таким образом я получаю ошибки такого вида: Undefined index.

Вопрос в том, как соединить все массивы с одинаковой переменной $lang в один, что бы использовались все переменные, всех массивов?
Спасибо.
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Как соединить несколько массивов в один на PHP

Сообщение Slash » Пн июн 15, 2015 4:48 pm

Думаю тут лучше использовать функцию array_merge(). Данная функция сливает элементы всех массивов в новый массив, где будут элементы всех массивов.

Следует делать в каждом языковом файле так: строку:

Код: Выделить всё

    $lang = array( 

заменить на:

Код: Выделить всё

$lang array_merge($lang, array( 

И добавить в конце ещё одну скобку: ));. Пример:

Код: Выделить всё

$lang array_merge($lang, array( 
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',    
)); 
Аватара пользователя
Лeйлa
Сообщения: 38

Re: Как соединить несколько массивов в один на PHP

Сообщение Лeйлa » Пн июн 15, 2015 6:03 pm

Slash, появилась такая ошибка:
Notice: Undefined variable: lang in /.../.../.../lang/index.php on line 2 Warning: array_merge(): Argument #1 is not an array in /.../.../.../lang/index.php on line 12

Что я не так сделала?
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Как соединить несколько массивов в один на PHP

Сообщение Slash » Пн июн 15, 2015 6:46 pm

Я не подумал об этом... В общем надо перед массивом, в каждом языковом файле сделать проверку переменной $lang, если переменная не определена создавать массив, вот так например:

Код: Выделить всё

if (empty($lang)) 
{
    
$lang = array();

Можно еще сделать проверку переменной является ли она массивом, если нет то опять же создаем массив. Можно вставить в тоже условие:

Код: Выделить всё

if (empty($lang) or !is_array($lang))
{
    
$lang = array();

Реализовано, как в phpBB3: Показать

Код: Выделить всё

if (empty($lang) or !is_array($lang))
{
    
$lang = array();
}

$lang array_merge($lang, array(
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',
    
' ... '   => 'Перевод',    
)); 
Аватара пользователя
Лeйлa
Сообщения: 38

Re: Как соединить несколько массивов в один на PHP

Сообщение Лeйлa » Ср июн 17, 2015 10:53 am

Slash, Вы как всегда выручаете!
Всё получилось! Спасибо.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Как соединить несколько массивов в один на PHP

Сообщение Slash » Вт авг 23, 2016 10:09 am


Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость