Работа с массивами в joomla 1.5
В расширениях для joomla, может возникнуть необходимость обрабатывать данные представляющие собой массив, или объект. Задачи могут быть различные, однако в некоторых случаях, дабы не изобретать велосипед, удобно воспользоваться функциями фреймворка joomla входящими в пакет Utilities.
Данные функции находятся в файле libraries/joomla/utilities/arrayhelper.php, который следует импортировать в код вашего расширения для joomla, использую функцию jimport, следующим образом:
- <?php
- jimport( 'joomla.utilities.arrayhelper' );
- ?>
После этого нужно создать новый экземпляр класса JArrayHelper, в состав которого и входят нужные функции работы с массивами. В примере ниже показано как это сделать:
- <?php
- $arrayhelper = new JArrayHelper();
- ?>
После этого переменная $arrayhelper, будет содержать ссылку на объект JArrayHelper, который содержит функции для работы с массивами:
- toString - преобразует масив в строку
- getColumn - позволяет получить данные соответствующие определенному ключу
- toInteger - преобразует ассоциативный массив в массив с ключами 0,1,2,3...
- toObject - функция преобразует массив в объект
- fromObject - функция преобразования объекта в массив
- getValue - функция получения значения по ключу из многомерного массива
- sortObjects - функция сортировки объектов массива
А теперь подробней о каждой функции:
toString - эта функция обработки массива, принимает один обязательный параметр - массив, и три необязательных параметра, а возвращает строку, ниже показан пример вызова данной функции и результат ее работы по обработке массива:
- <?php
- "foo"=>"yandex.ru",
- "bar"=>"google.com"
- );
- $toString = $arrayhelper->toString($array, $inner_glue = '=', $outer_glue = ' ', $keepOuterKey = false);
- echo $toString;
- //выведет строку: foo="yandex.ru" bar="google.com"
- ?>
getColumn - эта функция обработки массивов или объектов, удобна в том случае когда например, мы имеем многомерный массив, элементами которого являются ассоциативные массивы. И при этом нам нужно получить данные зная лишь имя ключа ассоциативного массива, т.е индекс мы можем и не знать. К примеру мы имеем массив следующего вида:
- <?php
- );
- ?>
И нужно к примеру, получить значение соответствующее ключу support, и при этом не зная под каким индексом находится сам массив в "глобальном массиве". С помощю функции getColumn, сделать это очень просто:
- <?php
- );
- $getColumn = $arrayhelper->getColumn($array, "support");
- //выведет строку: Array ( [0] => support@mail.ru )
- ?>
toInteger - это функция преобразования значений массива в целочисленный значения. Следующий пример демонстрирует результат такого преобразования:
- <?php
- "yandex.ru",
- "google.com",
- "100"
- );
- $toInteger = $arrayhelper->toInteger($array);
- //выведет строку: Array ( [0] => 0 [1] => 0 [2] => 100 )
- ?>
toObject - преобразует массив в объект, очень полезная функция, возвращает объект c именем stdClass, или же другим именем, который возможно указать во втором, необязательном входном параметре. Следующий пример демонстрирует работу функции по преобразованию массива в объект stdClass:
- <?php
- "100"=>"yandex.ru",
- "google.com",
- "200"
- );
- $toObject = $arrayhelper->toObject($array);
- //выведет строку: stdClass Object ( [100] => yandex.ru [101] => google.com [102] => 200 )
- ?>
fromObject - обратная функция, преобразования объекта в массив, на входе принимает обязательный параметр - объект stdClass, а на выходе получаем ассоциативный массив. Используя результат работы функции toObject, из предыдущего примера передадим объект в функцию fromObject, и на выходе получим прежний ассоциативный массив:
- <?php
- $obj = $toObject;
- $fromObject = $arrayhelper->fromObject($obj);
- //выведет строку: Array ( [100] => yandex.ru [101] => google.com [102] => 200 )
- ?>
getValue - функция обработки массива, позволяющая получить значения по ключу из многомерного массива. Данная функция принимает четыре параметра: getValue( а четвертый позволяет указать тип данных которые следует получить, и если тип не соответствует, то возвращается $default, то есть NULL. Следующий пример демонстрирует работу функции getValue:
- <?php
- "name"=>"mail.ru",
- "help"=>"help.mail.ru",
- "support"=>"support@mail.ru"
- );
- $getValue = $arrayhelper->getValue($array, "help");
- //выведет строку: help.mail.ru
- ?>
sortObjects - функция сортировки массива по ключу, принимает три параметра: sortObjects( &$a, $k, $direction=1 ), первый параметр это массив объектов, второй это ключ по которому будет выполнена сортировка, а третий параметр может быть равен единице или -1, что указывает на сортировку соответсвенно по возрастанию и убыванию. Пример ниже демонстрирует работу этой функции:
- <?php
- );
- $sortObjects = $arrayhelper->sortObjects($array, "help", -1);
- /*выведет строку:
- stdClass Object([0] => stdClass Object ([help] => support@mail.ru)
- [1] => stdClass Object([help] => help.mail.ru)
- [2] => stdClass Object ([help1] => mail.ru))
- */
- ?>
PS. Читайте последние записи RSS Подписка на RSS