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

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

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

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

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

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

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

Вопрос в том, как соединить все массивы с одинаковой переменной $lang в один, что бы использовались все переменные, всех массивов?
Спасибо.

Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2083
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 69 раз

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
Зарегистрирован: Ср апр 08, 2015 9:42 am

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
Администратор
Сообщения: 2083
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 69 раз

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

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

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

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

if (empty($lang)) 
{
    $lang = array();
} 
Можно еще сделать проверку переменной является ли она массивом, если нет то опять же создаем массив. Можно вставить в тоже условие:

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

if (empty($lang) or !is_array($lang))
{
    $lang = array();
} 
Spoiler: Показать

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

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

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

Аватара пользователя
Лeйлa
Сообщения: 38
Зарегистрирован: Ср апр 08, 2015 9:42 am

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

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

Slash, Вы как всегда выручаете!
Всё получилось! Спасибо.

Аватара пользователя
Slash
Администратор
Сообщения: 2083
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 69 раз

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

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


Ответить Пред. темаСлед. тема

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

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