Работа с массивами в joomla 1.5

Среда, 16 Ноябрь 2011

 

В расширениях для joomla, может возникнуть необходимость обрабатывать данные представляющие собой массив, или объект. Задачи могут быть различные, однако в некоторых случаях, дабы не изобретать велосипед, удобно воспользоваться функциями фреймворка joomla входящими в пакет Utilities.

 

Данные функции находятся в файле libraries/joomla/utilities/arrayhelper.php, который следует импортировать в код вашего расширения для joomla, использую функцию jimport, следующим образом:

 

  •  
  • <?php
  • jimport( 'joomla.utilities.arrayhelper' );
  • ?>
  •  

 

После этого нужно создать новый экземпляр класса JArrayHelper, в состав которого и входят нужные функции работы с массивами. В примере ниже показано как это сделать:

 

  •  
  • <?php
  • $arrayhelper = new JArrayHelper();
  • ?>
  •  

 

После этого переменная $arrayhelper, будет содержать ссылку на объект JArrayHelper, который содержит функции для работы с массивами:

 

 

А теперь подробней о каждой функции:
toString - эта функция обработки массива, принимает один обязательный параметр - массив, и три необязательных параметра, а возвращает строку, ниже показан пример вызова данной функции и результат ее работы по обработке массива:

 

  •  
  • <?php
  • $array = array(
  • "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
  • $array = array(
  • array("name"=>"yandex.ru", "help"=>"help.yandex.ru"),
  • array("name"=>"google.com", "help"=>"google.com/support"),
  • array("name"=>"mail.ru", "help"=>"help.mail.ru", "support"=>"support@mail.ru"),
  • );
  • ?>
  •  

 

И нужно к примеру, получить значение соответствующее ключу support, и при этом не зная под каким индексом находится сам массив в "глобальном массиве". С помощю функции getColumn, сделать это очень просто:

 

  •  
  • <?php
  • $array = array(
  • array("name"=>"yandex.ru", "help"=>"help.yandex.ru"),
  • array("name"=>"google.com", "help"=>"google.com/support"),
  • array("name"=>"mail.ru", "help"=>"help.mail.ru", "support"=>"support@mail.ru"),
  • );
  •  
  • $getColumn = $arrayhelper->getColumn($array, "support");
  •  
  • print_r($getColumn);
  • //выведет строку: Array ( [0] => support@mail.ru )
  • ?>
  •  

 

toInteger - это функция преобразования значений массива в целочисленный значения. Следующий пример демонстрирует результат такого преобразования:

 

  •  
  • <?php
  • $array = array(
  • "yandex.ru",
  • "google.com",
  • "100"
  • );
  •  
  • $toInteger = $arrayhelper->toInteger($array);
  •  
  • print_r($array);
  • //выведет строку: Array ( [0] => 0 [1] => 0 [2] => 100 )
  • ?>
  •  

 

toObject - преобразует массив в объект, очень полезная функция, возвращает объект c именем stdClass, или же другим именем, который возможно указать во втором, необязательном входном параметре. Следующий пример демонстрирует работу функции по преобразованию массива в объект stdClass:

 

  •  
  • <?php
  • $array = array(
  • "100"=>"yandex.ru",
  • "google.com",
  • "200"
  • );
  •  
  • $toObject = $arrayhelper->toObject($array);
  •  
  • print_r($toObject);
  • //выведет строку: stdClass Object ( [100] => yandex.ru [101] => google.com [102] => 200 )
  • ?>
  •  

 

fromObject - обратная функция, преобразования объекта в массив, на входе принимает обязательный параметр - объект stdClass, а на выходе получаем ассоциативный массив. Используя результат работы функции toObject, из предыдущего примера передадим объект в функцию fromObject, и на выходе получим прежний ассоциативный массив:

 

  •  
  • <?php
  • $obj = $toObject;
  •  
  • $fromObject = $arrayhelper->fromObject($obj);
  • print_r($fromObject);
  • //выведет строку: Array ( [100] => yandex.ru [101] => google.com [102] => 200 )
  • ?>
  •  

 

getValue - функция обработки массива, позволяющая получить значения по ключу из многомерного массива. Данная функция принимает четыре параметра: getValue( а четвертый позволяет указать тип данных которые следует получить, и если тип не соответствует, то возвращается $default, то есть NULL. Следующий пример демонстрирует работу функции getValue:

 

  •  
  • <?php
  • $array = array(
  • "name"=>"mail.ru",
  • "help"=>"help.mail.ru",
  • "support"=>"support@mail.ru"
  • );
  •  
  • $getValue = $arrayhelper->getValue($array, "help");
  •  
  • print_r($getValue);
  • //выведет строку: help.mail.ru
  • ?>
  •  

 

sortObjects - функция сортировки массива по ключу, принимает три параметра: sortObjects( &$a, $k, $direction=1 ), первый параметр это массив объектов, второй это ключ по которому будет выполнена сортировка, а третий параметр может быть равен единице или -1, что указывает на сортировку соответсвенно по возрастанию и убыванию. Пример ниже демонстрирует работу этой функции:

 

  •  
  • <?php
  • $array = array(
  • (object)array("help1"=>"mail.ru"),
  • (object)array("help"=>"help.mail.ru"),
  • (object)array("help"=>"support@mail.ru")
  • );
  •  
  • $sortObjects = $arrayhelper->sortObjects($array, "help", -1);
  •  
  • print_r($sortObjects);
  • /*выведет строку:
  • 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

 

Метки:

Добавить комментарий