GrabDuck

Работа с массивами в joomla 1.5 | Joomla | CMS Системы управления контентом

:



 

В расширениях для 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
$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